SIBO 'C' Software Development Kit 


SERIES 3/3A PROGRAMMING GUIDE 


Version 2.30 


March 1, 1999 


(C) Copyright Psion PLC 1990-98 


All rights reserved. This manual and the programs referred to herein are copyrighted works of Psion PLC, 
London, England. Reproduction in whole or in part, including utilization in machines capable of 
reproduction or retrieval, without express written permission of Psion PLC, is prohibited. Reverse 
engineering is also prohibited. 


The information in this document is subject to change without notice. 


Psion and the Psion logo are registered trademarks, and Psion, Psion MC, Psion HC, Psion Series 3, Psion 
Series 3a, Psion Series 3c, Psion Siena and Psion Workabout are trademarks of Psion PLC. 


TopSpeed is a registered trademark of Clarion Software Corporation. IBM, IBM XT and IBM AT are 
registered trademarks of International Business Machines Corp. Microsoft and MS-DOS are registered 
trademarks of Microsoft Corporation. Apple and Macintosh are registered trademarks of Apple Computer 
Inc. VAX and VMS are registered trademarks of Digital Equipment Corporation. Brief is a registered 
trademark of Underware Inc. Psion PLC acknowledges that some other names referred to are registered 
trademarks. 


Contents 


1 Series 3 Programming Overview.............ssccsscssscssscssccssccsscsecssscseesssssssscccesssscssesssscsessseseees 1-1 
Programming possibilities ..............cceseccceeseseceeeseceeseceecceeaceeceseaeeeceeeeeseeeeeeeseeeeeeenaeeeeanees 1-1 
Differences between .app files and .img files... eeeceeeesecceeeeeeeeeneeeeeesaeeeeeeeneeecnneeeenees 1-2 

Addsfile: Sts sic sst3sctisscssiastosend lees sues thssapteteaioteasdesdodstanecae audeusoastealateasde aeedcauteaiaseandae 1-2 
Pre-defined add-file Slots:.:.iociictsih ici ek hens iaeieleitii ond ubetie choca haces 1-2 
Running programs via RUNIMG S3....... cee eeseeesseeseseceseecesceceseeeesaeecsaeecseessaeessneeees 1-3 
Program files with and without icon files 0.0... eeeeeseessseeseneecsneeseeecsaeeeseeesneeeesaes 1-3 
Resource files and shell data files... ee eesecsseecsseeceseessceceseceesaeecsaeesseeseessseeeesaes 1-3 
Customised add=fless.. -iou..:. aca tecteeiiied iis Rachie ehdila se beuhod shan buaadeedesioegsitasdetaseeade 1-3 
Finding add-files within a .app file... cece eeeeesseeceseeeesseeseeeesaeecsaeesseeeesaeneeeeesaes 1-3 
Multi-lingual applications ..............ccceeeccceeseecceeeseeeeeeeeeeeeeeeceseaeeceeseneeceneeeeeeeaeeeeeenneeeeneae 1-4 
Environment variables on the Series 3 .........eeseeeeesseeesseecsneecsececeecsseesesaeeesaeecsaeesseeeaeers 1-4 
AVOIC S$ :SIQTS) 05. .:252.ch caveats Seccaces tees cbutducasoecee Sues ned Seanetescusssuayeodbobertea hs cadaed sandestoeneect ta 1-5 
Series. 3 family compatibility. s:2.::).cissssdscvei sks snndesidvaviesesats.oriesb Aaatesidhapdevinisdspbianser ieee dos 1-5 
Series 3/Series 3a/Workabout compatibility ......... ec eeeeeeseeesseecneeceseeeeseeessaeeeseeseers 1-5 
Compatibility with Series 3c and Siena... eee eeeeseecsseeeseeeseecaeesseessseeeesaeeesaeeaes 1-5 
Programs written for the Series 3.0... eeceeseesseecsseeessceceseeeeseceseeessaeecsaeecsaeeessereeeeees 1-5 
Programs written for the Series 3a .......eeceeeeeeseecsseessseeceseeeeseeeseeeesaeecsaeecseeseneeeeeeee 1-5 

2 Communicating with the System Screen ..............ccccscsccssscssssssecsscssecssssecsssccessssceessssssesseesors 2-1 
INtrOdUCH OMe s<ie2.1i2ii thas cbids hanicasdiatige Mateo tia aa aosds cae Mosta ts Mreatieiohits ea tines heey 2-1 
Creating: Shed files) vescssctteehe cai ssc Sih douse eh bach eguie tei bae eh gvag eh eegoaede eags be shonededte tod asuenees 2-1 

‘TPhé:format: of..ms files ...3:5:t.ccisss stiosst etd Asche Aasidoa Bashers 2-1 
Default extension 35:55: aus cabsavesssigh fore thessits Bag passteors Us higeatiteest ods Ry eietews Taba teeercts 2-2 
Pub e Name sets serie vicassgaliacetiankesyagansoes iaauesuaeestvoeetasea rasbea obabasensasecasieaesgeananyicasieeasacates 2-2 
Default director ys. ci seeeci Sats ccseock ccessushodeseaeh oceeeentosontent nageancessenuses sagnancnedendncnnneransseneess 2-2 
Application type nUMDEe®rs ...........cccsccceeseseceessceceesececeeseneeecesnneeeceeeeeeeseaeeeessnaseeeeenees 2-2 
Multi-lingual forms of .ms files... ees eeseeeeseeceseeeseecseessceeesaeeesaeecsaeesseessneeeesaes 2-3 
Pure file list applications.............ccccccceeseescecesseceeeeeeeeceenneeecsseeeceesaeeeseseeeeeseeeeeseeenees 2-4 
Aliasing applications ............cccccceesssccceesseceeeeescecceseneeeceeneeeeeseaeeecseaeeecseaeeeeeseatesesenneeeeeeeeas 2-4 
Creating-als fless.c.5:8 liu td css sist nites ietait Asada Masse ssnaiieas 2-5 
Active aliasing and passive aliaSINg.........ceeececeseecsseecsseeceseeeesseecsseeseseeeesaeessaeessaeeeees 2-5 
Active aliasing in the built-in text editor... eee eeeeeesneecsneeeceseeeeseeeesaeessaeeseneeesee 2-5 
How aliasing, Works: ic-cbistiincnisi ea din eee wet aed oh ah owen es evans 2-6 
Epoc reserved: statics: oss cdgeiasicedetsascvetiys hecvssuseesaeies hvaou she cuss vasnssae ovedadaesuscesssvutsdes seanesassones 2-7 
DatProcessNamePtr:(OX22):5 2.05 2-b accents eibhel ceeeestaie ova ilanaiandnanatitis 2-7 
More on the file lists in the System Screen ........eseeeeeseeeesseeeeseecseeecsececesaeecseeseeeeees 2-7 
Assigning application buttons ........ eee eeeeescecssceeeseeeesseecsacecseecesaeeesaeecsaeesseeesteeeesaes 2-8 
DatUsedPathNamePtr (OX3¢) ........cc:ccccccccssssssseeeeececeessesneeeeeeeceessesseeeeeeeseeeesseeeeseesenes 2-8 
DatStatusNamePtt (OX36) is :2.08 8 Aas titiest Bai dds Aad as 2-9 
Datleocked (Ox3ai).2c sctag estes isesagasiceatceengesseneecaiessuesaeg saree eea teak GO 2-9 
The'Series 3 command limes o.2.5.4. fics sist iefeesecrsiben oad eee ahiesbiedeas ous evudeeb ns ebehlelaeens 2-9 
Summary of command line format... eee eeeeeesecsneecsseeeeseeeesaeecsaeesseessseeeesaeeesaeers 2-10 
Supplying a command line from the SIBO Debugget .......... eee eeeeeeseeeeseeeeneeeeneeeeenes 2-10 
From command line to reserved Statics .........:eeeeeeseceseecssceceseeeesseecseesseeeeseeeesaeeees 2-11 
Applications that disregard their command line.................cceeecseeeeeeeeeeeeeeeeeeeeeneeeeeeeee 2-11 
Creating directories When required ............eeseeeseecseseeeseecseeceeecsseeeesaeeesaeersaeesseeeees 2-12 
Messages from the System Screen ..........eeeesceesseeessceeesseecseecsseecsseeeesseecsaeesseecsseeeesaeeesaeers 2-12 
Shutdowm Messages...2.5Ace.hiiiscosdsuseascsesssangl casi ceaazensdaaicnasiguapesineieaiedeatanasuoeieaaees 2-12 
Switchfiles MeESSAsesicc.ii.8:ceiseahssch sit hols ncdac chs HeasseoceuSeech bach leshoestocgh Guahtesteasboessaoenedi seuss 2-12 
How messages from the System Screen are received... ees eeseeeeseeceseeeeteeeseeseeeeeee 2-12 
Contents of the new command line for System Screen messages ............ssceeeseeeeeeeeeee 2-13 
Other possible types Of MeSSages..........:-eseesseeceseeceseeeseecseesseecsteesesaeeesaeessaeesseeeees 2-13 


Multi-lingual aliasing of Word. app...........ceseceeeseesseeseseeceseceeesseecsaeecseeeeesaeessaeeseeeesns 2-13 


GENERAL PROGRAMMING MANUAL 


ii 


3 Enhanced Sound Output. ...............csccccssssccssscssecsscssecssscseesssscsesssscssesssscsesssssssesssscsssssssssssesssoees 3-1 
Trt Od uC tris ae need echoes eed ak antes eal ads est ong ek aad wstone saat dvb tp naet ae daees eek Seta eet eee 3-1 
Sound on the Series 3.s...2:..ccyohivseaesi yeisigieae eayhelnisiyanel Wiener elton spank 3-1 

TMtLOUUCHONY! st .etshe on oto enctnd dn ahead aot Rite et a ie ae Aisi Rute aht wt ae 3-1 
The sndfrce and snddvr device drivers ...........ceeceeseecsscecssceeeseeessseecscecsseesesaeeesaeeesneers 3-1 
Tristalling Sin ited sos se ces ceases: ceessad este edat ves otes ene ventewep ones sche otntavey tes anhersatenuseceteete 3-1 
Opening a channel to MUS? ..0......eeceecsenecseessecenesscesnnetoncsepscecesonesenesnonsenssenesesenenees 3-2 
Actilally Creatit S SOUS oo. 52s. oe. vatnd ccovved ahs etunechvoued axhectndscbvoues ste eshn toch sonst acnestuleslvanstsaee 3-2 
BxXampletsieavsscut ksh avai inn asthe a ia ada a ade neve 3-3 
Possible tonesis s,s ss: fisee faces iat ses wep oveptanpavec eves obisiaetaiiy etet edupiget vegestedesaget otis etsbedevonet 3-3 
PAaliS@Si sivas esol ainag Bester ues vine hes vesanhes ven e ea bieayh nigaehs Meaapd ania Seti Synn yee 3-3 
When to open and close MUS:........eeeeeesecesseeesseecesceeesseecsacecsscecesaeeesaeessaeesseeeeneeeesaes 3-3 
When to install and de-install the Idd file... eee eeseecesneeesneeesneeeseeesseeeesaeessaeers 3-4 
Sound On tHe: SEries Bais 25 elce cca deset ilu eden ceed set oisdeceseder stotleutyesctevlevaceterteesstedese det svigeautetetoeets 3-4 

A: WSE-OF SPY: APP scecsscssrascssescacsssessascsGonsacsseasoaseosesdissosvsasceosesssesdusessssoseasseseessosssbenssesveassesevbasosseses 4-1 

Tint OA CHOU s55 52. ss ec .2h. Pore tego s ees dike duis Fades ous teens da Babe cou Tevactee Bebe sik ceeseeds thoes enewisde de sna eae ied 4-1 
Buildiiig Spy. apprsiasiseissecasioveteaescetealsaceldawsscateaciaeaieangcatsacsaeatagextaguesensdemeensagieoansenses 4-1 
The main display ...........ccececccccsssscccesencecceeseeecessaceceesnaeeeceeaeeeceneaeecesenaeeecseeeeesenaeeeesenneeeeneas 4-1 
Heap :StatistiCs sc) scsisscavsitcvaeseccaadaceesansces dave seucsessseuscvssdedecssuscuscusasauesessiassusatiaccvantess 4-2 
Stack: Statist Cs ‘ssscvss sein cevyecudssivenut docks cove hveies Saves rats ckbedeh oluke ealactosdeh stehe setheosteh sunhs seen 4-2 
SESMENE StALISLICS s2isc8,22sidsestesiacessdasanenbactsceadasapestas agent aestenbectacsondateen tes laouendateestgiias 4-2 
Tests for heap integrity ...........cececscceesssceceesseeceeseeecceseaeeeceseneeecseaeeeeeseeeeeesneeeeeenees 4-2 
PLOCESS PLIOTILIOS sf. 55s. fete divs fees oes tddacissdaadeaideded rad cacdeaccudsdisateiacdvsunees susacaascvicieesesaneas 4-2 
Othier dattaresc: cccs2-0b tac ectets Abed oeeseeteteeleb tease ela ckeieds ess dade deevsivers iad oesieren Hues 4-3 
Logging Window Server statistics ..........::cesceesscecsseeeeeeecscecseeeeseeeesseecsaeersneessteeeesaes 4-3 

Appendix A Technical Specifications ................cccsccccsscsscsscsseccsscscecsscccessssccesssscssssssccsessssesseees A-1 
Psion Series 3a Technical Specification .............sceescccsssceecsseecssceceseeeesaeeesaeecsaeesseeeeseeeesaes A-1 
Psion Series 3/38 specification ...........cceeccesseeesseecsseecsscecsseecesaeecsaeecsaeecseessneecesaeessaeeesaeers A-2 
Psion Series 3c Technical Specification 0.0.0... .eseeseccsseceecsseecsseeceseeeesaeeesaeecseessseeeeseeeesaes A-3 
Psion Siena Technical Specification...........cscsescccsseecsseceecsseecssceceseecesaeeesaeecsaeessseeseseeeenaes A-4 
Psion Siena SSD Drive Technical Specification ...........ceceeeseseseeceseeceeseessseeceseeeesaeeesaeees A-5 
Psion Serial 3Link Technical Specification ............eeeeessessseecssceessceceeseecsseecsseeeesaeeesaeers A-5 

PC Serial 3Link to Apple Macintosh converter ............c:cessceesseessseeceseeeesseeseaeessseeeeee A-7 
PC Serial 3Link to Apple Macintosh converter .............s:cessceesseecsneeeeseeeesseeesneeseeeeees A-7 
Modem Adaptor cable..........eccccceessccccessceeeeseneeeeeseneeecesneeeeeseaeeeesseaeeeeseneeeeceeeeeeeseeeeess A-7 
Serial Printer cable (Series 3a) - Technical Specification ...............cceeccceeesseeceeesneeceeeeennees A-7 
Serial Printer cable (Series 3c/Siena) - Technical Specification ............:::cccssscceeesseeeeeeeeees A-8 
Psion PC Link cable Technical Specification ...........eeceeeeseecsseeceseeesseeeeseesseessneeseseeeenaes A-8 
Modem Adaptor Cables. e....ccssuecevietesstegesetsteg teh seep vies sat etstcawpsdet ovng aut levgotes ovtg oakteee sbeee} A-8 
Psion Mac link cable Technical Specification ............ cc eeeeeeseecsseeeeseeceeseeceeecsseeeesaeeesneers A-8 
Psion 9-to-25 way D-type adapters Technical Specification...........ceseeesessseeceseeeesneeeeneers A-9 
Modem 9-to-25 way D-type adapter - wiring diagram ......... eee eee eeseeeeseeceneeeeseeeeseeeesneers A-9 
PC (XT) 9-to-25 way D-type adapter - wiring diagram ........... ce eeeeeseeeseeceneeeeeeeeesneeesneers A-9 
Printer 9-to-25 way D-type adapter - wiring diagram .......... eee eeeeesneeeeseeceneeeeseeeesaeeeeneees A-10 
Psion Parallel 3Link Technical Specification ........... ce sceesecceseeceseeeseecsaeecseecsseeeesaeeesaeers A-10 
Psion Parallel Printer Link Cable Technical Specification... ceeseeesceseseeceseeeeeeesneers A-10 
Psion PC Card Modem Adapter Technical Specification ...........ecceeseeeseecsseeeeseeeesneeeeneees A-11 
Psion Travel Modem Technical Specification ............ceesesesecssceceseeeeeseeesaeecseeesseeeeseneers A-13 
Psion 3Fax Modem Technical Specification ...........ceseeeceesseecsseecsseecssceceseeeesaeecsaeesseeeeee A-14 
Appendix B Differences Between Psion Series 3 Models ..............csssssccsscssecsscsseccsscsceessssseeeees B-1 
Current models in the Series 3 family... eee eeseeeseeceseeceseeecsseecsaeecseecesaeeesaeecsaeessaeeeees B-2 
Superceded models in the Series 3 family ....... cee eee eeeseceseeceseeceseeeesaeeesseecsaeesseeseseeeenaes B-3 


CHAPTER 1 


SERIES 3 PROGRAMMING OVERVIEW 


Throughout the Series 3 Programming Guide, reference to the Series 3 machine should be taken to 
include the Series 3a and the Workabout unless stated otherwise. See also the Workabout Programming 
Guide for further information specific to that machine. 


Programming possibilities 

In general terms, there are six different levels at which programs can be written for the Series 3: 
e using OPL, creating .opo or .opa program files 
e using CLIB, with user interface restricted to console i/o of the getchar and puts variety 
e using PLIB, again with user interface restricted to console i/o 
e using WLIB, accessing the graphics and windowing capabilities of the Window Server 
e using Hwif, with its support for menus and dialogs similar to those available in OPL/w 


e using HWIM, FORM, OLIB and (for the Series 3a) XADD, the object-oriented DYLs built into 
the ROM. 


All but the first of these uses the C programming language. 


For programming in OPL see the Series 3, Series 3a and Workabout Programming manuals, or the SIBO 
OPL Software Development Kit. 


For more detailed information about PLIB library routines and the window server see the PLIB Reference 
and Window Server Reference manuals respectively. 


Programming using Hwif is also covered in its own separate manual, Programming in Hwif. This manual 
is particularly recommended on account of its relevance to the Series 3. 


For details of object-oriented programming see the object oriented sections of the C SDK, starting with the 
Object Oriented Programming Guide. 


The present manual focuses on features of the Series 3 and Series 3a that are by-and-large unique to these 
particular computers (as opposed to other computers in the SIBO range, that is, the HC and MC 
computers). These features include: 


e the difference between .app and .img forms of program file 

¢ communications between applications and the System Screen 

e the specialised form of the command line for applications 

e some device drivers unique to the Series 3 and/or Series 3a 

e development tools particularly suited to the Series 3 and Series 3a computers. 


e writing applications that run on all machines. 


SERIES 3/3A PROGRAMMING GUIDE 


Other parts of the SDK that may be found of particular relevance to programming for the Series 3 
include: 


e the descriptions of file formats used by various applications, in the Additional System 
Information manual 


e adescription of the special form of printer driver files used on the Series 3, also in the Additional 
System Information manual. 


Before proceeding further with this chapter, the reader is recommended to be familiar with the basic 
contents of the General Programming manual. 


Differences between .app files and .img files 


Strictly speaking, there is no real difference between files with extension .img and those with extension 
.app. For example, although the System Screen usually expects to install .app files, it will also, if 
requested, install suitable .img files. 


However, by convention a .app file contains one or more extra so-called add-files embedded within it, in 
addition to the core .img file itself. These files may include: 


e a.pic file providing the icon for the application 
e a.rsc or .rzc file providing the resource file for the application 
e a.shd file providing the shell data for the application. 


Any such add-files can be added into the .img file automatically, via the operation of emake.exe, at the 
time the .img file is itself created. What controls the set of add-files used (if any) is the presence or 
absence of a suitably named add-file list (.afl) file. 


Add-file lists 


An add-file list (afl) file is a text file containing from one to four filenames. For example, the contents of 
a file tele.afl could be: 


tele.pic 
tele.rsc 
tele.shd 


When any .pr project file is invoked that leads to the building of tele.img, the existence of a file tele.afl is 
checked for. If such a file is found, the files listed therein are combined with the core .img file to form a 

larger .img file as output. By convention, .img files that contain embedded add-files are renamed to .app 
files. 


See the chapter Building an Application in the General Programming manual, for more details. 


Pre-defined add-file slots 


The RscriILe class in the OLIB library can find resource files embedded in a .app file, but only if they are 
placed in the second of the four slots. 


The System Screen expects to find a .shd file in the third add-file slot of a program being installed, and 
indeed will refuse to install it if no such data is found there. 


The Window Server, however, will find a .pic file (or a .fon file) at any of the four add-file positions 
within a .app. In view of the requirements for resource files to occupy the second slot, and for .shd files to 
occupy the third slot, .pic icon files are usually placed in the first add-file slot - as in the above example. 


At the time of writing, there is no mechanism to specify a file for (say) the third add-file slot, while 
omitting the second add-file altogether. For this reason, it may occasionally be necessary to create and 
maintain a zero-length file for the second slot. 


1 SERIES 3 PROGRAMMING OVERVIEW 


Running programs via Runimg 


An alternative to installing a program in the System Screen with its own file list is to run it from the 
RunImg icon: 


e the user presses TAB while the highlight is within the RunImg file list 
e the user navigates the file selector until it selects the program file 
e the user presses ENTER to start this program. 


This procedure can be simplified if the program is placed in a top-level \img\ directory, and given the 
extension .img. In this case, the program will automatically appear as an entry in the RunImg file list. 


However, a program run in this way will receive no special command line from the System Screen. Nor 
will it receive any Shutdown or Switchfile messages from the System Screen. (These messages are 
discussed in the following chapter). 


Program files with and without icon files 


An application can simply not have an icon, although in this case the system screen will simply refuse to 
install it. The application can, however, still be run from RunImg, in which case, an empty icon boundary 
will be displayed in any status window used. 


Icon files, such as tele.pic, may be produced by a variety of means: 


¢ using the Jconed demo application that can be built using the Hwif part of the SDK or, for the 
Series 3a and Workabout, the Iconeda application that is installed in a \sibosdk\s3atool directory 


e using the Window Server tool wspcx.exe on the .pcx output of a PC program such as Windows 
PaintBrush. 


The .pic file can contain: 
@ a 24x24 bitmap for a Series 3 icon. 


¢ two 48x48 bitmaps for a Series 3a icon - the first and second bitmaps specify the black and grey 
planes respectively. 


@ a 24x24 bitmap for a Series 3 icon followed by two 48x48 bitmaps for a Series 3a icon. 
The format of .pic files is given in the Bitmaps section in the Window Server Reference manual. 


Resource files and shell data files 


See the Resource Files chapter of the Additional System Information manual for a description of the 
format and uses of resource files. 


Shell data files are discussed in the following chapter. 
Customised add-files 
In most cases, at least one add-file slot will be free for use by the application itself. 


One important reason to build an extra file into the .app file, rather than leaving such a file separate, is 
that it diminishes the chance of a user copying the .app file from one SSD to another but neglecting to 
copy a vital associated file at the same time. 


Finding add-files within a .app file 


Ordinarily, applications have no need to find add-files within themselves, since system code takes care of 
this on their behalf. 


One possible exception is when an application needs to access a customised add-file. In this case, 
knowledge of the format of the header of a .img (or a .app) file is required. In fact, this header just 
contains the same information as is returned by invoking edump.exe. 


The header of a .img file is described by the ImgHeader struct, defined in epoc.h. See the chapter 
Processes and Inter-process Messaging in the Plib Reference manual for a discussion on this struct. 


SERIES 3/3A PROGRAMMING GUIDE 


An example of code that attempts to locate a resource file in the second add-file slot of a .app file is as 
follows: 


GLDEF INT rscfile_rs_init (PR_RSCFILE *self, TEXT *name) 


{ 
ImgHeader head; 


/* self->rscfile.offset is zero by default */ 
f_open (&self->rscfile.pcb, name, P_FRANDOM|P_FSTREAM|P_FSHARE) ; 
if (p_read(self->rscfile.pcb, &éhead, sizeof (head) )==sizeof (head) ) 
{ 
if (!p_scmp (&head.Signature[0],"ImageFileType**") ) 
{ /* we have a .img file */ 
if (!(self->rscfile.offset=head.Add[1].offset) ) 
p_leave (E_FILE_INVALID) ; 


Multi-lingual applications 


The topic of multi-lingual applications is discussed in general terms in the course of the Resource Files 
chapter of the Additional System Information manual. 


There are some issues about the set of possible command hot-keys ("menu accelerators"), however, that 
are particular to the Series 3. 


The set of possible accelerators varies from language to language on account of the keyboard changing. 
All languages must, however, support the 26 accelerators 'a' through 'z', together with four more. 


These additional accelerators are '+', '-', '*', and '/' in most languages. The only exceptions so far are 
French and Spanish (and Belgian, which uses the French keyboard): 


e French replaces '/' with '?' 


e Spanish replaces '*' with '>' and '/ with 'i'. 


Applications which fail to take account of these changes when they are translated into another language 
will find they end up carrying a "Iame" accelerator: the accelerator is displayed on the menu, but there is 
no way for the user to press the required key combination. 


Environment variables on the Series 3 


Environment variables can be a powerful programming resource whilst being, at the same time, 
potentially anti-social. 


There are two aspects to this: 


¢ environment variables consume space in a special RAM segment devoted to them - the more 
environment variables are created (and the larger these are), the greater the chance becomes of 
other applications failing to work properly - on account of not being able to create their 
environment variables. 


e name clashes are possible - data stored in an environment variable by one application may get 
obliterated by another application storing different data to an identically named variable. 


With regard to the first problem, all that can be said is that due caution should be observed. Otherwise, 
your application may earn itself a bad name. 


With regard to the second problem, what is evidently required is some kind of naming convention. 


For a full discussion of environment variables see the paragraphs preceding p_getenv in the Plib 
Reference manual. 


1-4 


1 SERIES 3 PROGRAMMING OVERVIEW 


Avoid $ signs 


The 's' sign is used in names of environment variables created and manipulated by Psion system 
software. 


All external applications should completely avoid using environment variables with 's' signs in them - 
unless they first secure the agreement of Psion. 


The plan is to extend the use of 's' to mean, not just "used by Psion", but rather "licensed by Psion". 
Interested software developers who contact Psion will be given a short identifier - for example, "$175". A 
company which receives this identifier could then create environment variables with names such as 
"S$17S$table" OF "$17$ma", secure in the knowledge that no other responsible developer will also use these 
names. 


In conclusion, '$' signs should be avoided in all cases; even where approved by Psion, environment 
variable names should include 's' signs only in their identifier region. Thus a name of "sas17s" would 
not be allowed. Environment variables can of course continue to have "simple" names, such as "table" 
and "ma", but in this case, the chance of a name clash remains. 


Series 3 family compatibility 


Series 3/Series 3a/Workabout compatibility 


All Series 3 applications are fully compatible with the Series 3a and Workabout. These two machines 
automatically recognise such applications and run them in compatibility mode - both the icon, as 
displayed on the system screen, and the display are expanded linearly by a factor of two in each 
dimension. 


In fact an application that wishes to use the full screen capabilities of the Series 3a or Workabout must 
explicitly turn off the compatibility mode by calling the wcompat ibilityMode function - see the Window 
Server Reference manual for further details. 


An application can identify which machine it is running on - using a call to p_geticd - see the Plib 
Reference manual for details, and Compatibility in the General Programming Manual for an example. 


Thus it is quite feasible to write an application that runs on the Series 3, Series 3a and the Workabout, 
using the screen of each machine to the full. However, care should be taken to ensure that the application 
does not use any Series 3a or Workabout specific features when running on the Series 3 - the grey scale 
or, on the Series 3a, the improved sound facilities for example. The Workabout also has different 
keyboard scan codes from the other members of the Series 3 family, (see Hardware Management, in the 
EPOC OSS System Services manual). 


Compatibility with Series 3c and Siena 


Programs written for the Series 3 


All Series 3 programs can be expected to run without modification on both the Siena and the Series 3c. 
The programs will run in compatibility mode, as they do on the Series 3a. 


Programs written for the Series 3a 
Most types of program will run without modification on the Series 3c. 


It is likely that most Series 3a programs will need some modification, to take account of the smaller screen 
size, before they will run on the Siena. Menus and dialogs in Series 3a programs will, in general, be too 
wide and will need to be reorganised and/or reworded. Applications that use a sophisticated layout in their 
display are likely to need extensive modification before they can be used on the Siena. 


Series 3a applications written using the Hwif library, and which use grey lines in their menus, will need to 
be relinked with a suitably modified Hwif library before they will run on either the Siena or the Series 3c. 
This incompatibility is associated with the introduction of small fonts for dialogs on the Workabout and 
Siena. 


Hwif programs that are compiled and linked with a modified Hwif library (see the Programming in Hwif 
chapter of this upgrade document) that is supplied with the upgrade software can run on the Series 3, 
Series 3a, Series 3c, Workabout and Siena - provided, of course, that their displays are tailored to the 
various screen sizes and graphics capabilities of these machines. 


CHAPTER 2 


COMMUNICATING WITH THE SYSTEM SCREEN 


Introduction 


An important aspect of the Series 3 is the way all the built-in applications communicate with the System 
Screen application (also known as the Shell application): 


e The name of any file currently open is displayed in bold in the file list in the System Screen 
e This name is also displayed in any status window shown 


e Ona request from the System Screen, an application can close itself down tidily, saving any 
changes to file as appropriate 


e =©Alternatively, applications can be requested to switch files, to change which file they are 
currently editing. 


Applications use two mechanisms to communicate to the Series 3 OS their preferences concerning file 
switching, as well as the name of the file they are currently editing: 


e some data is written at compile time into a shell data file (.shd file) that is linked into the 
application's .app file; this data includes the expected extension of any files to be edited, and the 
default directory for these files, as well as the more basic point of whether the application is file- 
based at all 


e other data can be written at run time to various reserved Epoc statics; these include the full path 
name of the file currently being edited. 


Creating .shd files 
The format of .ms files 


The shell data of an application (see above) is expressed in source form in a file that typically has 
extension .ms. For example, the contents of a file tele.ms could be: 


Tele.TEL 
\TEL\ 
3 


Running the tool makeshd as follows 
makeshd tele 
would produce the file tele.shd from tele.ms (barring syntax errors in the .ms file). 


The .shd file can then be combined into the final .app form of an application as discussed in the previous 
chapter. 


The first line in a .ms file has general form 
<Name>[<.EXT>] 


with the extension .&xT only being present for file-based applications. In that case, .ext defines the 
default extension for the application. In all cases, Name is the so-called public name of the application. 
This must be a valid file name, that is, it must start with a letter and not exceed eight characters. 


SERIES 3/3A PROGRAMMING GUIDE 


The second line in a .ms file gives the default directory for an application. This can be left blank for non 
file-based applications. For example, the .ms file for the built-in Time application could be 


Time 
8000 
with the second line left blank. 


The third line in a .ms file gives the type of the application (sometimes called the type number of the 
application). 


A .ms file can have fourth, fifth, sixth ... lines, but only if 2000 has been added to the application type, so 
that the application has multi-lingual shell data (see below). 


At present, there is no scope for the inclusion of comments in a .ms file. 

Note that the entire contents of a .ms file is case sensitive. Eg an application with first line 
RunGame 

in its .ms file will have public name RunGame, whereas an application with first line 
Rungame 


in its .ms file will have the distinct public name Rungame. Further, the default extension and default 
directory should always be given in upper case (otherwise the file list may fail to display any files). 


Default extension 
The significance of the default extension for a file-based application is as follows: 


e Files will be shown in the file list for the application in the System Screen only if their extension 
matches the default (with the exception that files are always shown - in bold - if they are 
currently the open file of an application) 


e The System Screen will pass the specified default extension to the application as part of its 
command line, when it is started 


e Typically, applications will use filename selectors in dialogs which hide extensions matching the 
default (eg showing Tele rather than Tele.tel), and may even omit other files from the initial list 
presented. 


Public name 
The significance of the public name of an application is as follows: 


e This is the name by which the System Screen refers to the application, eg when confirming that 
the application be "Removed", or when allowing an application button to be assigned to the 
application 


e This name will be displayed in the file list for the application, in the System Screen, in any case 
when the list would otherwise be empty. 


The contents of Name [.EXT] must in all cases be a valid filename, ie Name cannot exceed eight characters 
in length, xT cannot exceed three characters in length, and there must be no embedded spaces (etc). 


Default directory 


Files will be shown in the file list for the application in the System Screen only if they are located in a 
directory whose name exactly matches the default (with the exception that files are always shown - in 
bold - if they are currently the open file of an application). 


Default directories for applications are usually top level, as in \TEL\. However, they can equally well be 
subdirectories, as in \TEL\PRIVATE\, with the limitation that the total length cannot exceed 20 characters 
(this count including a terminating zero at the end of the directory path name). 


Application type numbers 
The significance of an application's type number is as follows: 


e A type of 0 means that the application a) will have no file list when installed in the system screen 
- instead there will be only one entry, giving the public name of the application b) will receive no 
Switchfile commands from the System Screen and c) no filename will be specified in the 
command line. Type 0 applications can have only one copy running at any one time. 


2 COMMUNICATING WITH THE SYSTEM SCREEN 


A type of 2 is used to restrict a file based application such that only one copy can run at any one 
time - this is the case for the built-in World application. In contrast see types 0 and 3. 


A type of 3 means that the application a) will have a file list when installed in the System Screen, 
and b) can receive Switchfile instructions. More than one copy of the application can be run at 
any one time. 


A type of 4 means that the application will have a file list in the System Screen, but will never be 
sent Switchfile instructions: however, it should read the command line on its start up (an example 
is the built-in RunOpl application) 


Finally, a type of 5 means that the application is a pure file list application, ie not a real 
application at all, but just an icon to group together various applications or utility programs (like 


the built-in RunImg icon) - see below for more details. 


The application's behaviour may be further modified by adding one or more of the following values to the 


type number: 


8000 


4000 


2000 


1000 


100 


80 


prevents Switchfile messages of the Create sort being sent to the application 
(this makes sense for an application such as a file dumper, which can dump the 
contents of existing files, but cannot meaningfully create the file it is going to 
dump) 


prevents the application being sent Shutdown messages - this will also prevent 
the application being Killed from the System Screen (but not, for example, 
from the Spy application released as part of the SDK) 


indicates that the application's .ms file contains public names for more than one 
different language version (see below) 


indicates that the .pic file contains a 48 by 48 Series 3a icon (preceded by a 24 
by 24 icon if the application is to run on the Series 3 as well as the Series 3a). 
The Series 3 does not recognise this flag and will simply read the 24 by 24 icon 
if present. 


the application should not be sent an exit message so that, for example, 
pressing DELETE acts as Kill application. The Series 3 does not recognise this 
flag. 


on selecting "Create new list" from the System Screen, the resulting dialog box 
will contain an extra line, for specifying Text editor or Word processor type. 
The Series 3 does not recognise this flag. 


Multi-lingual forms of .ms files 


Suppose the Data application were to be translated into French, German, and Italian, and that its public 
names in these languages were to be Fiche, Daten, and Archivi, respectively. In that case, an appropriate 
.ms file would be as follows: 


Data.DBF 
\DAT\ 


2003 


Q1Data 
02Fiche 
O03Daten 
O5Archivi 


Here, the 2000 in the application type means that the remaining lines in the .ms file are each made up as 


follows: 


<language number><public name in that language> 


where language numbers are as documented in the p_get language part of the Plib Reference manual. 


The same rules apply to the public names for other languages as to the default public name defined in the 


first line of the .ms file. 


It is not possible to change the default extension or the default directory from one language to another. 


SERIES 3/3A PROGRAMMING GUIDE 


Applications which are intended to be capable of being run on either mono- or multi-lingual Series 3s 
should adopt the multi-lingual form of .ms file, and simply accept that the public name will be incorrect 
on mono-lingual machines. 


For multi-lingual machines, the System Screen uses the following rules to decide what the public name of 
the application should be: 


e the current language number is obtained by a call to p_get language 


e if this matches any language for which a public name is explicitly defined in the shell data, that 
public name is used 


e otherwise, the default public name is used (as given on the first line of the .ms file). 


For the sake of minimising the size of a multi-lingual .shd file as much as possible, it is evidently possible 
to omit any lines such as 


01Data 


which merely define the public name for some language to be what it would have been in any case, were 
this line omitted (in view of the contents of the first line of the .ms file). 


Pure file list applications 


If an application (Utils, say) has type 5, and the user presses ENTER when the highlight is over some file 
Xyz.abc in the file list for that application, the System Screen makes no attempt to run the application 
Utils. Rather, it assumes that Xyz.abc is itself a program, and attempts to run that. In other words, 
instead of executing Utils and passing the filename Xyz.abc as part of the command line, it executes 
Xyz.abc (without any command line being passed). 


For example, the .ms file for the built-in "application" RunImg is as follows: 


Runimg.IMG 
\IMG\ 
8005 


This means that the file list for RunImg lists .img files from \VMG\ top-level directories - each of which are 
program files. 


Note that unless the utility programs cooperate in some limited way, when run they will be listed (in bold) 
under the RunImg icon, rather than under any other pure file list icon. This is explained in the section 
below on the Epoc reserved static DatProcessNamePtr. 


In practice, the simplest way to create another pure file list application is probably to use the technique of 
aliasing, as discussed immediately below, to alias RunImg. 


Aliasing applications 


Some file-based applications may end up with large file lists. It may be desirable to separate a file list into 
two or more separate lists, for example (for the Word application) all correspondence going in one file list, 
all poetry in another, and so on. These file lists could be distinguished, on the System Screen, by having 
distinct icons, and different application buttons could be used to cycle round running instances of these 
tasks. 


Going further, it may be desirable for the behaviour of the application to alter, depending on which type 
of file is open. For example, the behaviour of the built-in text editor is different for .wrd files (when the 
application is seen as Word) from .opl files (when the application is seen as Prog). 


The concept of aliasing an application is designed to meet these requirements. For each required new file 
list, an alias file (als file) should be installed in the System Screen. In practice the user can do this on the 
Series 3a using the "Create new list" item from the "Special" menu (try it out ...). 


Broadly speaking, the contents of a .als file match those of a .shd file: the public name, default extension, 
and default directory are all defined, as well as the application type number. However, the .als file goes 
beyond the .shd file in that it also specifies: 


e the name of the application that is being aliased 


e (optionally) some alias info that the System Screen should pass to the application when it is run, 
via the command line, to configure its behaviour in some special way. 


2 COMMUNICATING WITH THE SYSTEM SCREEN 


Creating .als files 


An .als file is produced from a .ma file and a .pic file by running the tool makeals. The three files all 
have the same root name (ie disregarding the extensions). For example, the command 


makeals letter 
produces the file /etter.als from letter.ma and letter.pic. 
The .pic file is the icon to use. The process of creating .pic files is discussed in the previous chapter. 


The .ma file is a source file similar in format to a .ms file. For example, the contents of a file letter.ma 
could be: 


Letter.let 
\WRD\LET\ 
3 

Word 


in which there is a fifth line which is blank (makeals will give an error if the fifth line is omitted 
altogether). 


Just as there are multi-lingual forms of .ms files, there are also multi-lingual forms of .ma files. However, 
in practice these are of limited use, for technical reasons. This is discussed in its own section (which the 
majority of readers can skip) at the end of this chapter. 


The first three lines of a .ma file correspond exactly to those of a .ms file. The fourth file is the public 
name of the application to alias. The fifth line gives the alias info, which is a zero-terminated string of 
up to eight characters. 


In most cases, the application type will be the same for the alias file as for the application being aliased. 
However, the public name, the default extension, and the default directory are all commonly varied. 


Note that the public name of an alias must differ from that of the application it is aliasing. Otherwise, 
seeking to install the alias in the System Screen will have no effect (it is not possible to have two different 
file lists, each with the same public name). 


Incidentally, no check is made, at the time of installing an alias file, that the application it aliases is itself 
currently installed. This check is only made when an instance of the alias is to be started. 


Active aliasing and passive aliasing 


In theory, all applications are capable of being aliased, without them needing to make any conscious 
provision for this possibility. This is known as passive aliasing. 


Other applications pay explicit attention to any alias info that may be passed to them on their command 
lines, and adjust their behaviour according to the contents of this info. This is known as active aliasing. 
An example of active aliasing is that of the built-in text editor, as described in the following section. This 
is the only one of the applications built into the Series 3 and Series 3a that supports active aliasing. 


Any other program that supports active aliasing is free to interpret alias info passed to it in any way that it 
wishes. There is no obligation to mimic the detailed rules obeyed by the text editor. 


Active aliasing in the built-in text editor 


If the alias info is a null string, the text editor enters Word mode, with multi-level outline facilities, styles 
and emphases, and so on. 


Note that it is not unreasonable for an alias to define null alias info. This allows the creation of aliases of 
the text editor that behave in exactly the same way as the built-in Word application, but differ from each 
other in terms of their default extensions, default directories, and/or public names. 


If there is any non-null alias info, the text editor enters one of a number of other modes, with the mode 
depending on the first character of the alias info. Some of these modes are not available on Series 3 
machines. At the time of writing, the allowed first characters and the corresponding modes are: 


OPL program editor 

Comms script program editor 

Plain text editor (not Series 3) 

Word processor with custom template (not Series 3) 


Nunn O 


2-5 


SERIES 3/3A PROGRAMMING GUIDE 


The program editor mode is available on all machines. In this mode there is no access to the style and 


emphasis subsystems, the corresponding menu commands being replaced by options to "translate", "run", 
"show error" and set "indentation". 


In this mode, the first letter of the alias info denotes the nature of the program that is being edited. It 
actually identifies the program to invoke to effect any "translate" and (possibly) "run" commands from the 
user. The generic name of this program is sys$prg?.img, with the question mark being filled in from the 
first letter of the alias info. Thus the Prog alias has 'o' for the first letter of its alias info, and so the OPL 
translate/run program sys$prgo.img is used. In contrast, the Script editor from the communications ROM 
has 's' for the first letter of the alias info, so that the program sys$prgs.img is used. 


In program editor mode the second letter of the alias info should be 'R' if the program is of a type that 
understands "run" instructions in addition to "translate" ones. Any other second character disables the 
"run" command option. The following three letters (e.g. 'opo' or 'sco') denote both the expected file 
extension and the expected top-level directory where any translated output will by default be placed. (This 
information is used by the editor when offering the user a suitable filename to "run"). 


On the Series 3a a final '*' character may be added to the alias info. This has the effect of adding an "S3 
Translate" menu option. 


The remaining modes are not available on Series 3 machines. 


Alias info that consists of a single '$' character selects a plain text editing mode. In this case the 
program-related menu options are suppressed, with only an "indentation" option being offered. 


A variant on the Word mode is set by alias info that consists of a single '/' character. This behaves in a 

similar way to the Word application, with the exception that a specific template file is loaded whenever a 
new file is created. The template must have the same name as the aliased application and must be located 
on the current drive at the time the new file is created. Thus, an alias created from the following .ma file: 


Letter. LET 
\LET\ 

1083 

Word 

/ 


would, on creation of a new file, automatically load the template file \wdrVetter.wrt, provided it exists on 
the current drive. Note that, in this mode, the value 80 must be added into the application type number. If 
it is not, the automatic loading of the template is disabled. 


How aliasing works 


Part of the mechanism of aliasing is handled by the System Screen: 
e creating a new file list 
e listing the appropriate files in the new file list 
e allowing the user to assign a new application button to the new file list 


¢ creating a suitable command line to pass to the relevant application, when the user chooses to 
start an instance of the alias (by pressing ENTER on an entry in the file list). 


However, other parts of the mechanism of aliasing rely on the application paying suitable attention to the 
details of the command line passed to it. Failure to do this will diminish the effect. 


Thus even passive aliasing relies on some cooperation from the application being aliased. For example, 
an application that is determined that it knows what its public name is (say Word) and which writes this to 
DatProcessNamePtr (see below) in all cases, despite any different public name being passed to it on the 
command line, will frustrate the intent of any aliasing application: 


e¢ any application button assigned to the alias by the user will be ineffective 
¢ running instances of the alias will appear (in bold) in the wrong file list in the System Screen. 


This is just one reason why all serious applications should analyse the command line passed to them, as 
part of their initialisation procedures. 


There are routines in both the Hwif library and the Hwim dyl to assist in analysing the command line. 


2-6 


2 COMMUNICATING WITH THE SYSTEM SCREEN 


Epoc reserved statics 


The values of the Epoc reserved statics DatProcessNamePtr, DatLocked, DatStatusNamePtr, and 
DatUsedPathNamePtr all have special significance for Series 3 applications. The values of these variables 
for different applications are read at various times by the System Screen and also by the Window Server. 
An application which fails to write suitable data to these statics may find that: 


e an incorrect name is displayed in any status window shown in the application 
¢ instances of the application are shown in the wrong file list in the System Screen 


¢ Shutdown or Switchfiles messages arrive at inopportune moments from the System Screen (see 
below for more on these messages) 


¢ assigning an application button to the application in the System Screen has no effect. 
In general, applications should write to these reserved statics: 

e on initialisation (after having analysed the contents of their command line) 

e whenever a new file is opened 

e whenever the application is about to go "busy" over an extended period of time. 


There are routines in both the Hwif library and the Hwim dyl that assist with keeping these reserved 
statics up to date. 


While debugging using the Sibo Debugger, the values of reserved statics can be determined by using the 
"Magic Statics" menu command. 


DatProcessNamePtr (0x22) 


This static is read by the System Screen when deciding which file lists bolded running applications should 
be placed into. It is also read by the Window Server when deciding which action to take when an 
application button is pressed. Finally, it is read by the System Screen in response to any "Quit 
application" menu commands, to determine how to implement this request (ie how much cooperation the 
System Screen might expect from the application). 


The way the file lists are built in the System Screen is as follows: 
e for each list, the set of all eligible files is compiled; these will all be displayed non-bolded 
e then for each running application, it is decided which file list the application belongs to 
e this involves reading the value of DatProcessNamePtr for the application 
e further, for each running application, the name of the file currently open (if any) is decided 


e this involves reading the value of patusedPathNamePtr for the application (and possibly also the 
value of patProcessNamePt r) 


e if this name matches any entry in the file list, that entry is removed (so that it is no longer 
displayed non-bolded) 


e the name of the open file is added to the list, in bold. 
Clearly, the lists will be misleading if the running application is assigned to the wrong list. 
The rules for assigning a running application to a particular file list are straightforward: 
e the preferred public name of the application is read from patProcessNamePtr 
e if this matches the public name of any existing file list, the application is assigned to that list 
¢ otherwise, the application is assigned to the RunImg list. 


More on the file lists in the System Screen 


Incidentally, any entry starting with Sys$ is never displayed in any file list. Further, the name Link is 
never displayed in the RunImg list. These rules prevent the display of private system processes within the 
System Screen file lists. 


SERIES 3/3A PROGRAMMING GUIDE 


Additionally, files with the "hidden" attribute set are never displayed in a file list in the System Screen - 
unless the file is open within an application (in which case it will be displayed in bold). 


In order to check for the existence of hidden files or file starting with Sys$ in a directory, the user should 
press TAB to enter "directory" mode of the System Screen. 


It is also possible to task to an application whose open file starts with Sys$ by repeatedly pressing the 
SHIFT+SYSTEM key combination, which tasks round all running applications (that are clients of the 
Window Server). 


Assigning application buttons 


Suppose that the user has installed the application Te/e, and has assigned the application button 
CONTROL+WORD to it. The following is what happens when the user presses CONTROL+WORD: 


e at all times, the System Screen maintains a data structure associating each of the 14 possible 
application buttons to public names of applications 


e the address of this data structure, within the System Screen dataspace, is known to the Window 
Server (in fact it is kept at Datapp1) 


¢ when CONTROL+WORD is pressed, the Window Server consults this data to determine the public 
name that is currently associated with this application button (ie Tele in this example) 


e the Window Server next checks whether the public name of the current foreground application 
matches Tele, reading the public name from DatProcessNamePtr 


e if so, this application is sent a special key-press event, with keycode value equal to W_KEY_MODE 
(as defined in wskeys.h) - unless the SHIFT modifier is also held down, in which case the 
algorithm continues as below 


e¢ otherwise, the clients of the Window Server are scanned in current task order, to see whether any 
can be found with the required public name 


e if any can be found, this is made foreground 


e failing this, a message is sent to the System Screen to position, if possible, to the file list 
associated with the given public name 


e if no such file list exists, the System Screen beeps and gives a suitable error message. 


The crucial point in this is that, once again, the public name of the application has to be written to 
DatProcessNamePtr. 


Incidentally, it is now clear why pressing the CONTROL+SYSTEM key (assigned to RunImg), or any other 
application button assigned to a pure file list application, often fails to have the desired effect (of bringing 
to foreground a running application listed in the relevant file list). The point is that these applications are 
generally run without any command line being passed to them, and so they cannot set up a suitable value 
at DatProcessNamePtr merely by analysing their command lines. 


Also note that the assigned buttons differ in one aspect of their behaviour depending on the machine used. 
Consider an application, the built-in database say, that is currently running in the foreground. On the 
Series 3 pressing the Data button would change the application from search mode into change mode, and, 
on a second press, back into search mode. On the Series 3a pressing the Data button has no effect when 
there is currently only one copy of the application running. However when multiple copies are running, 
then pressing the Data button has the effect of sequentially bringing each copy into foreground - 
simultaneously holding down the shift key reverses the order of bringing into foreground. Try out the Data 
button while running multiple copies of the database ... 


DatUsedPathNamePtr (0x3e) 


The Epoc reserved static DatUsedPathNamePtr is read solely by the System Screen, which assumes that if 
it is non-null for an application, DatUsedPathNamePtr points to a full path specification of the file 
currently open in the application. As described above in the section on DatProcessNamePtr, these 
filenames are used when generating the file lists in the System Screen: 


e any open file matching an entry in the non-bold section of the file list replaces that entry 


e the filename is parsed and rearranged, eg from the form LOC::A:\WRD\SHOPPING. WRD into 
Shopping[A]. 


2-8 


2 COMMUNICATING WITH THE SYSTEM SCREEN 


In case DatUsedPathNamePtr 1s null, the value of the string at patprocessNamePtr (if any) is used instead: 
failing that, the process name (as returned by p_pname) is used. 


Initially, the name of the open file is part of the command line (see below). However, when this has to be 
changed - either as a result of an Open or Save as command inside the application, or in response to a 
Switchfile request from the System Screen - a new buffer has to be used for this purpose. (The command 
line buffer is sized to precisely the right length needed for the initial file.) 


Typically, file-based applications will maintain a permanent buffer, of length p_rnames1zz, to store any 
change in the name of the file open. Once the new name has been copied into this buffer, a call such as 
hSetUpStatusNames (described below) should be made, to adjust all Epoc statics as appropriate, including 
DatUsedPathNamePtr. 


DatStatusNamePtr (0x3c) 


The Epoc reserved static pat StatusNamePtr is used to determine which text string should be displayed as 
the name of the application in any status window shown for that application. 


If non-zero, this is assumed to point to a string giving the text to use, with the text being clipped at the 
first dot encountered, and in any case after eight characters. The text is also converted into standard 
capitalised form. Thus if patstatusNamePtr points to "DIARY.acN", the text Diary will be displayed in 
the status window. 


The rules for what text to display when pat statusNamePtr is null are the same as those employed when 
DatUsedPathNamePtr is null (see above). 


DatLocked (0x3a) 


When the user attempts to terminate an application using the "Quit application" command in the System 
Screen, or to change the file currently open, by pressing ENTER on another entry in the file list for that 
application, the System Screen checks the value of the Epoc reserved static Dat Lockea for that application. 


If this is non-zero, a message Application is busy 1s displayed, and the user's request is refused. 


Applications which enter a state in which they are unable to respond to such requests from the System 
Screen should accordingly set patLocked to TRUE. Good programming practice dictates that DatLocked be 
set back to FALSE again as soon as possible afterwards. 


The Series 3 command line 


The command line communicates the following information to a Series 3 application about to start: 
e the public name of the application 
e the default extension for files used, if any 
e any alias information specified in an alias file 
e the full path name of the file to open, if any 
e whether this file should be opened or created anew 
¢ exceptionally, whether the application is to connect to the Window Server in background. 


When a program starts, its command line is placed in an allocated cell within the heap of the application, 
with the address of this cell being written to the Epoc reserved static DatcommandPtr. See the section on 
p_execc in the Plib Reference manual for some general information about patcommanaPtr. 


The command line for any Epoc program always starts with a zero-terminated string given the full path 
name of the process being run. The byte after this gives the length of any following data. Ordinarily, 
when referring to "the command line", it is this latter data that is in mind. 


For example, suppose the user presses TAB inside the Prog file list in the System Screen, navigates using 
the file selector to loc::m.\dat\data.dbf, and then presses ENTER. The full command line passed to the 
application thereby chosen (Word) is as follows: 


ROM: :WORD.APP<0><29>O0Program<0>.OPL OROPO<0>LOC: :M: \DAT\DATA.DBF<0> 


2-9 


SERIES 3/3A PROGRAMMING GUIDE 


The <29> immediately following the zero at the end of the first zero terminated string indicates that the 
remainder of the command line is 0x29 bytes long - as is indeed the case. 


The next byte after this is the so-called command byte: 
¢ acommand byte of 'o' means, for a file-based application, that a named file is to be opened 
¢ acommand byte of 'c' means, for a file-based application, that a named file is to be created 
¢ acommand byte of 'D' means the application is to connect to the Window Server in background. 


A command byte of 'p' arises only for the built-in applications, and is not considered in the remainder of 
this documentation. (When it does arise, it is handled automatically by code in hwim.dyl, which silently 
translates it into one of the other two cases.) 


Following the command byte, there is a zero-terminated string giving the public name of the application. 


After this comes another zero-terminated string, containing both the default extension and (if present) the 
alias info. The alias info, if present, is separated from the default extension by a space. 


Finally, yet another zero-terminated string gives the full path name of the file to open or create. 
With regard to the above example: 

e The command byte of the application is '0' 

e The public name of the application is "Program" 

e = The default extension is ".oPL" 

e = The alias info is "oRopo" 

e The name of the file to open is "Loc: :M:\DAT\DATA.DBF". 


Summary of command line format 


In summary, the format of the command line of a Series 3 application is as follows: 


<command byte><public name><0>[<default extension>[<space><alias info>]<0><full 
pathname><0>] 


Supplying a command line from the SIBO Debugger 


Ordinarily, applications are executed from the System Screen, which automatically constructs a suitable 
command line. 


When executing an application from the Debugger (or from an alternative "Shell" program), the 
command line has to be supplied explicitly. Some examples follow: 


@ SDBG TELE "CTELE",0,"LOC::M:\TEL\TELE.TEL" - debug the application fele giving it the public 
name Tele, and have it Create the file Loc: :M: \TEL\TELE. TEL on start up 


@ SDBG DA2 "ODAYS",0,"LOC::A:\ANN\DAYS.ANN" - debug the application da2 giving it the public 
name Days, and have it Open the file Loc: :A: \ANN\DAYS.ANN on start up 


@ SDBG JO1 "CJOKER", 0,0 - debug the application jo/ (which is not file-based), giving it the public 
name Joker. 


These examples take advantage of the following processing of the command line by the Sibo Debugger: 


¢ parameters entered as a string ("...") are passed on to the program with a zero terminating the 
string 


¢ parameters given in numeric form (eg 0) are passed on to the program as single bytes 
e adjacent parameters separated by commas are concatenated. 


One drawback of the command line processing of the Sibo Debugger should be pointed out: everything is 
automatically upper-cased. This means that if an application button has, for example, been assigned to 
the public name Days, no application run in this way from the Sibo Debugger will ever be tasked to as a 
result of the user pressing the corresponding application button (for public names are in general case- 
sensitive). 


2-10 


2 COMMUNICATING WITH THE SYSTEM SCREEN 


From command line to reserved statics 


As mentioned earlier in this chapter, an application should analyse its command line on start-up, and 
should write various values from this command line into Epoc reserved statics as a result. 


As an example of how this could be done, there follows the source code for two Hwif routines: 


GLDEF_C VOID hSetUpStatusNames (TEXT *pb) 


{ 
TEXT buf [P_FNAMESIZE]; 


P_FPARSE crk; 


DatUsedPathNamePtr=pb; 

p_fparse(pb,0, &buf[0],&crk); 

DatStatusNamePt r=pb+P_FSYSNAMESIZE+crk.devicetcrk.path; 
} 


GLDEF_C INT hCrackCommandLine (VOID) 


{ 
INT ret; 
TEXT *pb; 


pb=DatCommandPtr; 
pbt+=p_slen (pb) +1; 
if (!*pbt+) 
ret=0; 
else 
{ 
ret=(*pbtt) ; 
DatProcessNamePtr=pb; 
pbt+=p_slen (pb) +1; 
pb+=p_slen (pb) +1; 
if (*pb) 
hSetUpStatusNames (pb) ; 
else 
DatStatusNamePtr=DatProcessNamePtr; 


} 


return (ret); 


} 


For details of the patcommandptr and other reserved statics see the Processes and Inter-Process 
Messaging chapter of the Plib Reference manual. 


Applications that disregard their command line 


Simple applications - especially those that are not file based - have no need to pay any attention to the 
command line passed to them by the System Screen. In this case, the various relevant Epoc statics are left 
at their default (zero) values. This fact is picked up by the System Screen and by other parts of the OS, 
with the following results: 


e The name displayed in any status window and in the file list in the System Screen is just that of 
the application .app file 


e If the user requests the application to be shut down, from the System Screen, the application is 
shut down by the OS, without the application itself being informed of this fact (just as if the user 
had selected the Kill option in the System Screen). 


In case an application wishes to do its own processing in response to a Shutdown request issued by the 
user in the System Screen, it must therefore make a call to a routine such as hcrackCommandLine during 
its initialisation. This is true even if the application is not file-based. 


One final drawback of an application not processing its command line is that users will be unable to 
assign application buttons with any effect to that application. Suppose a user assigns CONTROL+WORLD to 
a version of the Spy application, for example, that fails to write anything suitable to patProcessNamePtr. 
If the user subsequently presses the key combination CONTROL+WORLD, the Spy application will fail to be 
brought into foreground - thus spoiling the whole purpose of assigning the application button. 


2-11 


SERIES 3/3A PROGRAMMING GUIDE 


Creating directories when required 


In contrast to file selectors on other systems, those on the Series 3 allow users to specify paths that do not 
yet exist. This can happen fairly commonly, for example as follows: 


e The user inserts a brand new solid state disk into drive A 
e =A Save as or New file menu command is invoked 

e The user adjusts the disc selector to this new disk 

e The user types eg "Backup" into the filename editor. 


Then assuming the default directory for the application is \D/R\ and the default extension is .EXT, the 
filename returned to the application is 


LOC::A\DIR\BACKUP. EXT 
even though the directory \D/R\ does not exist yet, on the specified disk. 


It is the responsibility of application programs to test for this case and to create the required directories. 


Messages from the System Screen 


Shutdown messages 


Series 3 applications can receive Shutdown messages from the System Screen, as an instruction to shut 
themselves down tidily, saving any changes to file as required. 


These messages can arise when the user presses DELETE while highlighting a running task in the System 
Screen. However, as mentioned above, if the application has set its Dat Locked to TRUE, the System Screen 
instead presents an Application is busy message. 


Incidentally, applications are sent Shutdown messages only if they have a non-zero value of 
DatProcessNamePtr. The System Screen assumes that any application that has left this Epoc reserved 
static at its default (zero) value is unlikely to be prepared to respond to Shutdown messages. In that case, 
the System Screen instead calls p_pterminate to terminate the application. 


Finally, note that any application which has 4000 included in its application type number will never be 
sent a Shutdown message from the System Screen; instead, the System Screen will display the message 
Cannot quit application. Note that this blocking mechanism was designed for internal use only, and 
should not be used without good reason. 


Switchfiles messages 


Series 3 applications can receive Switchfiles messages from the System Screen, as an instruction to close 
down their existing open file, and to open or create another one. 


These messages can arise when the user presses ENTER while highlighting a file within that application's 
file list in the System Screen. However, if the application has set its DatLocked to TRUE, the System 
Screen instead presents an Application is busy message. 


Switchfile messages will only ever be sent to applications with basic type number 2 or 3. Applications 
whose type numbers include 8000 can receive Switchfile messages of the Open sort, but not of the Create 
sort. 


How messages from the System Screen are received 


There are two parts to an applications receiving a Shutdown or Switchfiles message from the System 
Screen: 


e the application receives notification that some message from the System Screen has been sent 
e the application calls wGet command to determine the contents of the message. 


In turn, the initial notification can be received in either of two ways, depending on whether the 
application is receiving events from the Window Server directly (by calling wcetEvent or a variant), or as 
"extended keypresses" via the console device (as occurs for example in Hwif programs): 


e for the protocol in the first case, see the discussion on wM_comMaND in the Window Server 
Reference manual 


e for the protocol in the second case, see the discussion on P_EVENT_READ in the Console chapter of 
the I/O Devices Reference manual. 


2-12 


2 COMMUNICATING WITH THE SYSTEM SCREEN 


In either case, the initial event prompts the application to call weet command, to obtain the so-called new 
command line giving more details about the event. 


Contents of the new command line for System Screen messages 


The parameter passed to wGetCommand must be the address of a buffer having at least p_FNamEs1zE (128) 
bytes. The new command line is written into this buffer. 


The first byte of the new command line will be one of 'x', '0', or 'c!: 


a means the command is a Shutdown message 
‘oO! means the command is a Switchfiles message, with a specified file to be opened 
mG! means the command is a Switchfiles message, with a specified file to be created. 


In the case of Switchfiles messages, the remainder of the new command line gives the full pathname of the 
file to open or create. 


An example of code that responds to notification of a message from the System Screen is as follows: 


LOCAL_C VOID ProcessSystemCommand (VOID) 


{ 
UBYTE buf [P_FNAMESIZE]; 


wGetCommand (&buf[0]); 

if (buf [0]=='X"') 
ExitApplication(); 

SavelfChanged() ; 


if (buf [0]=='C') 

CreateNewFile (&buf[1]) /* remainder of message is ZTS of file to create */ 
else /* buf[0]=='0' */ 

OpenExistingFile(&buf[1]); /* remainder of message is ZTS of file to open */ 


} 
Other possible types of messages 


At the time of writing, the command byte of new command lines (as read by wGet commana) is restricted to 
one of the three values 'x', '0', or 'c'. It is possible, however, that some future application might send 
messages to other applications having different command bytes. 


These messages would be sent by means of the wSendcommana function, as described in the Window Server 
Reference manual. (Note that these messages are not the same thing as IPC (inter-process 
communication) messages; nor are they the same as object-oriented messages.) 


In order to be future proof, an application should arguably test explicitly for all expected values of the 
command byte, and should ignore values other than those expected. The above code fragment would 
therefore need to be modified. 


Multi-lingual aliasing of Word.app 


This section can be omitted by all readers, except those who wish to write a multi-lingual alias of 
Word.app. 


The reason why .als files as created by makeals.exe cannot be used in this case is that these files have to 
contain the public name of the application being aliased. However, the public name of Word.app can vary 
from language to language, and there is no facility to track this within an ordinary .als file. 


To surmount this problem, the .als file can be re-written as a program. 


2-13 


SERIES 3/3A PROGRAMMING GUIDE 


For example, the following code provides a successful multi-lingual alias for Word.app: 


2-14 


#include <p_std.h> 
#include <p_file.h> 
#include <epoc.h> 


#include <rscfile.xg> 


#include <p_sys.h> 


#define R_STRARRAY_APPNAMES 78 


GLREF_D UBYTE *DatCommandPtr; 


GLDEF_D TEXT olibDyl[]="OLIB.DYL"; 
GLDEF_D TEXT shellImg[]="ROM::SYSSSHLL.IMG"; 
GLDEF_D TEXT wordNameFmt []="ROM::%S.APP"; 


GLDEF_D TEXT aliasInfo[]={'S','R','S','C','0'}; 


LOCAL_C TEXT *skipStr(TEXT *p) 


{ 
return (p+p_slen(p) +1); 
} 


#pragma save, ENTER_CALL 


LOCAL_C INT getWordFspec ( 


/* 


Get full file spec of Word.APP using shell's resource file. 


Returns 0 if successful, leaves if error. 


ay 


TEXT *fSpec) /* To receive name */ 
{ 

TEXT *pAppNames; 

VOID *rsc; 

HANDLE cat; 


p_findlib(&olibDy1l[0],é&cat) ; 
rsc=f_newlibh(cat,C_RSCFILE) ; 

p_send3(rsc,O_RS_INIT, &shellImg[0]); 

p_send4 (rsc,O_RS_READ, R_STRARRAY_APPNAMES, &pAppNames) ; 
p_atos (fSpec, &wordNameFmt [0], skipStr(pAppNames+1)); /* 
p_free (pAppNames) ; 

p_send2 (rsc,O_DESTROY) ; 

return (FALSE) ; 

} 


Copy to 2nd string */ 


2 COMMUNICATING WITH THE SYSTEM SCREEN 


#pragma restore 


GLDEF_C VOID main(VOID) 


TEXT fSpec[P_FNAMESIZE]; 

UBYTE comBuf [E_MAX_COMMAND_BUFFER+1]; 
TEXT *pCommand; 

TEXT *pAlias; 

TEXT *pEndAlias; 

TEXT *p; 

HANDLE pId; 

INT len; 


p=skipStr(DatCommandPtr) ; 
len=(*p); 
pCommand=(pt1) ; 


pAlias=skipStr (pCommand) ; 
pEndAlias=skipStr(pAlias)-1; /* Point to end 0 */ 


p=p_bcpy (&comBuf [0], pCommand, pEndAlias-—pCommand) ; 
p=p_bcpy (p, &aliasInfo[0],sizeof(aliasInfo) ); 
p_bcpy (p, pEndAlias, len- (pEndAlias-—pCommand) ) ; 


if ((pId=p_enter2 (getWordFspec, &fSpec[0]) ) <0) 


goto fail; 
if ((pId=p_execc (&fSpec[0],&comBuf[0],len+5))<0) /* Run Word */ 
goto fail; 
p_setpri(pId,p_getpri(p_getpid())-1); 
pid=p_presume (pId) ; /* Won't run till I've exited */ 


fail: 
p_exit (pId); 
} 


This program uses the fact that the filename of the Word.app application is always stored in the 78th 
resource within the resource file of the shell application. (Hence the #define of R_STRARRAY_APPNAMES aS 
78.) This resource actually contains an array of strings giving the filenames of the built-in applications, 
with the filename of Word.app as the second element in the array. 


See the chapter Resource Files in the Additional System Information chapter for background on creating 
and using an instance of the rscfile class. 


The program also analyses its own command line, and constructs a suitable one to pass on to Word.app. 
The detailed working of the program can be followed using the information given earlier in this chapter. 


2-15 


CHAPTER 3 


ENHANCED SOUND OUTPUT 


Introduction 


The Series 3 and Series 3a provide distinct sets of sound services. 


The Series 3 as supplied can emit only buzzer sounds, DTMF dialling tones, and simple alarm sounds. 
However, by loading a suitable device driver, such as SVDFRC.LDD, the machine can also be made to 
emit sequences of musical notes of variable duration, thus greatly extending its sound capabilities. The 
first section of this chapter describes use of the SVDFRC.LDD attached device driver from within a simple 
demonstration program. 


The Series 3a has considerably greater sound capabilities than the Series 3. In addition to emitting buzzer 
sounds, DTMF dialling tones and simple alarm sounds, the Series 3a can play simultaneously two 
sequences of musical notes, and can play and record digital sound files - for details of playing and 
recording digital sound files see the General System Services chapter of the Plib Reference manual. The 
second section of this chapter describes a simple program that demonstrates the playing of sequences of 
notes using the built-in snp: device driver. 


Warning: any attempt to load and use the SVDFRC.LDD attached device driver on the Series 3a is a 
serious error - the machine will in all probability hang, necessitating a soft reset. 


Sound on the Series 3 


Introduction 


This section explains how to create a wider range of musical sound output, via the loudspeaker, than is 
possible by merely using the Series 3's built-in snp: device driver. 


These services rely on a dynamic extension to the Series 3 operating system, known as a loadable device 
driver. 


With this device driver installed, strings of sound covering two octaves in semitone intervals can be 
generated. Control is also possible over the duration and loudness of the notes emitted. 


The sndfre and snddvr device drivers 


The chapter Example Device Drivers in the Additional System Information manual describes two different 
enhanced sound drivers, sndfrc.ldd and snddvr.ldd, from the point of view of how to write device drivers. 
The current chapter focuses on the question, not how to write these drivers, but how to use them. 


In fact, this chapter only considers the driver sndfrc.ldd, which is arguably the superior of the two. See 
Example Device Drivers for a discussion on how the two device drivers differ. 


Once this device driver file has been installed, a device with the name mus: can be opened by applications. 


Installing sndfre.ldd 


Any program which wishes to use the services of sndfrc.ldd needs to check, during its initialisation, that 
this driver has been installed. This is necessary because, in contrast to some other device drivers such as 
the serial port device driver and the basic sound device driver, the mus: device driver is not built into the 
ROM of the Series 3. 


SERIES 3/3A PROGRAMMING GUIDE 


The way to check the device driver is loaded is to make the call 
p_loadldd("SNDFRC.LDD") ; 
where the full path of the ./dd file can be given. (The ./dd file has to be copied onto the Series 3.) 


The return values zero and &_FILE_Ex1StT can both happily be ignored. Other errors are more serious - 
they probably mean that the file sndfrc.ldd cannot be located. In this case, the program cannot continue (at 
least, not as according to its original intention). 


Opening a channel to MUS: 


Another pre-requisite to using the services of sndfrc.ldd is to open a channel to uus:. This is done in the 
standard manner for all i/o devices: 


p_open (&handle, "MUS:",-1); 


If this call is successful, it writes back the handle of the channel established to the device driver. All 
subsequent requests from the program (until such time as the channel is closed) should be made via this 
handle. 


Possible errors from the p_open call include: 


e "invalid arguments" - which probably means sndfrc.ldd has not been installed (or, having once 
been installed, it has since been de-installed) 


e "in use" or "locked" - another application is currently making use of the loudspeaker. 


In the second of these two cases, a brief retry philosophy might be adopted. If the channel still cannot be 
opened, a suitable error message should be displayed - leaving it up to the user to retry at some later time. 


Actually creating sounds 


The way sounds are actually caused to be emitted is by using the P_FwRITE service of the mus: channel. 


As for all device drivers, the P_FWRITE request can be made synchronously (eg using the utility function 
p_write) or, for more quality applications, asynchronously. If the request is made asynchronously, it 
allows the use of the P_FCANCEL service to interrupt and terminate a sequence of notes as they are playing. 


For example, 
p_ioc5 (handle, P_FWRITE, &musstat, &buf[0],é&len); 
to play a buffer of notes asynchronously. 


The parameter len (passed by reference) gives the number of notes in the buffer. The maximum allowed 
value of 1en is 500. (For arbitrarily long sequences of notes, call the Pp_FwRITE service more than once.) 


Each note is specified by one uworp in the buffer - so that but would be declared as 
UWORD buf[ ] 
For each note, the uworp contains three pieces of information: tone, length, and loudness. 


There are only four possible values of loudness: 0 (the quietest), 1, 2, and 3 (the loudest). The loudness is 
multiplied by 64 before being added into the uworp for the note. 


The duration is measured in 1/100ths of a second, and can have any value from 1 to 255. The duration is 
multiplied by 256 before being added into the uworp for the note. 


The allowed values of tone range in principle from 0 to 0x3£. See below for more details. 


3 ENHANCED SOUND OUTPUT 


Example 


#include <p_std.h> 
#include <p_file.h> 
#include <epoc.h> 


GLDEF_C INT main(VOID) 
{ 
INT ret; 
VOID *mcb; 
UWORD buf[10]; 
UWORD len; 
WORD musstat; 


ret=p_loadldd("SNDFRC.LDD") ; 
if (ret && ret!=E_FILE_EXIST) 
return (ret); 
ret=p_open (&mcb, "MUS:",-1); 
if (ret) 
return (ret); 
=0x30+ (40<<8) ; 
=0x32+ (100<<8) ; 
buf =0x34+ (40<<8) + (1<<6); 


buf [0 
i 
2 
buf [3] =0x35+ (100<<8) + (1<<6); 
4 
5 
6 


buf 


buf =0x37+ (40<<8) + (2<<6); 

=0x39+ (100<<8) + (2<<6) ; 

buf =0x29+ (40<<8) + (3<<6); 

buf [7] =0x3b+ (100<<8) + (3<<6); 

len=8; 

p_ioa5 (mcb, P_FWRITE, &musstat, &ébuf[0],é&len); 
p_iowait (); 

return (0); 


} 


buf 


This plays a scale of eight notes, with notes having wavering length and increasing loudness. 


Possible tones 


There are three types of tones that the Series 3 loudspeaker hardware can emit: DTMF tones, modem 
tones, and musical tones. 


For standard dual DTMF tones, set the tone part of the uworp to: 0x10 for DTMF digit 0, 0x11 for digit 1, 
..., 0x19 for digit 9, ox1a for "digit" a, ..., 0x1d for "digit" 4d, ox1e for *, and ox1¢ for #. 


For modem tones, 0x24 gives 1300 Hz, 0x25 gives 2100 Hz, then 1200, 2200, 980, 1180, 1070, 1270, 1650, 
1850, 2025, and 0x2f gives 2225 Hz. 


As for musical tones, twenty five notes are possible, incrementing by semi-tones over a 2-octave interval 
from p#5 to p#7. The corresponding tone values are 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 
0x39, 0x3a, 0x29, 0x3b, 0x3c, 0x3d, 0x0e, 0x3e, 0x2c, 0x3f, 0x04, 0x05, 0x25, Ox2£, 0x06, and 0x07. 


Pauses 
In order to pause, in the middle of a buffer of notes, set the tone value to o for one note. 
When to open and close MUS: 


An application that makes use of mus: services from time to time ought to call p_close to free the sound 
channel whenever it is not immediately needed. This allows other applications to make temporary use of 
the sound channel - eg for alarms or for standard DTMF dialling dialogs. 


If you wrote a game which opened mus: at its beginning, and only made sounds from time to time, and left 
this game in background while you went to the Data application to look up a telephone number, you 
would find the DTMF dialler would be unable to emit any sounds, and would report "Sound system in 
use" - even though the game is silent at the time. 


Far better in these situations for a program to open mus: just before it needs to use this channel, and then 
close it again immediately afterwards. 


3-3 


SERIES 3/3A PROGRAMMING GUIDE 


When to install and de-install the Idd file 


Once sndfrc.ldd has been installed, it occupies about 1.7 K of RAM. For this reason, it would seem to be 
best to de-install it, when the application terminates. The way to do this is to call (see the Plib Reference 
manual for more details) 


p_devdel ("MUS:",E_LDD) ; 


This call will fail if another application currently has an open channel to mus:. Applications should ignore 
any errors from p_devdel. 


Note however that if an application has: 
e ~=called p_loadidd to ensure mus: can be found 
e called p_open to open a channel to mus: 
e played some notes 
e called p_close to free up the sound channel 


then it cannot rely on mus: still being installed if it calls p_open again at a later stage. For another 
application may have called p_devde1, successfully, in the meantime. 


The upshot of this is that applications should call p_1oadidd prior to any call to open a channel to mus:. 


Sound on the Series 3a 


This section does not make reference to the recording and playing of digital sound - for details see the 
General System Services chapter of the Plib Reference manual. 


The Series 3a's built-in snp: device driver can be used to simultaneously play two tunes on the built-in 
speaker. Although the sound quality is not as high as with digital sound files, the memory requirements 
are much less. For example to play a tune lasting six seconds would require a digital sound file of size 
49,184 bytes. A comparable figure using the snp: device driver would be less than 1 Kb. 


The demonstration program sound.c (in \SIBOSDK\DEMO on the supplied disks) plays two sequences of 
notes using both channels of the built-in snp: sound device driver (only one application can have access to 
these channels at any given time). The tune is the so-called "ice cream van" tune that you may already 
have met in the Sound chapter of the i/o Devices manual - it is in any case recommended that you read 
that chapter before proceeding. 


The program demonstrates the following: 
e the opening and closing of a channel to the snp: device driver. 
e the sensing and setting of the volume level and the number of beats per minute. 
e the writing of notes to the two sound channels. 

A number of points are worth making: 


e aside effect of opening a channel to the snp: device driver is to power up the speaker. As a 
consequence the snp: channel should be closed as soon as the sound has been played - failure to 
do so could unnecessarily drain the batteries. 


e the snp: device driver, and hence the speaker, can only be used by one application at a time. As 
alarms and keyclicks will be disabled well written programs should close the snp: channel as 
soon as the sound has been played. 


e a serious of notes separated by silences can be created by setting the frequency to zero during the 
silent periods. 


e the sound will not play until a p_rFsSoUNDCHANNELn request has been made on both channels. The 
playing of sound on the two channels is thus automatically synchronised. 


e both p_FSSOUNDCHANNELn requests must be made asynchronously using p_ioc or the p_ioc5 
variant. On a low battery the request will fail to complete with an error message written to the 
status word. Use of p_iow, p_iow4, p_ioa and/or p_ioa5 would hang the machine on a low 
battery - a very serious programming error. 


3-4 


3 ENHANCED SOUND OUTPUT 


e sound can be played on only one channel by passing the other channel a length of zero for the 
note buffer - i.e. zero notes. 


e the P_FSET service sets both the volume and the beats per minute. The P_FSENSE service can 
be requested first to ensure that one or other parameter remains unchanged. 


To create a sound.img file simply type make sound in the appropriate directory. This file can then be 
copied to a m:\img directory on the Series 3a and run via the RunImg application in the usual manner. 


The code in sound.c is as follows: 


#include <p_std.h> 
#include <p_file.h> 
#include <epoc.h> 


GLDEF_C VOID waitstat2(WORD *pstatl, WORD *pstat2) 


/* Wait for *pstat!=E_FILE_PENDING and *pstat2 != E_FILE_PENDING */ 


INT i; 


i= -1; 


{ 


p_iowait (); 


Fa 

} 

while (*pstatl == E_FILE_PENDING && *pstat2 == E_FILE_PENDING) ; 
if (*pstat2 == E_FILE_PENDING) 


pstatl = pstat2; 
p_waitstat (pstat1); 


while (i--) 
p_iosignal(); 
} 


GLDEF_C VOID play_notes(WORD *bufl, WORD *buf2, WORD 11, WORD 12, INT volume, INT 
beatsPerMinute) 


{ 

VOID *pcb; 

WORD sndstat1l,sndstat2; 
E_SOUND sound; 

INT err; 


if ((err=p_open (&pcb, "SND:",-1) ) <0) 
{ 
p_close (pcb); 
p_exit (err); 


} 


if ((err=p_iow3 (pcb, P_FSENSE, &sound) ) <0) 
{ 
p_close (pcb); 
p_exit (err); 


} 


if (beatsPerMinute >= 0) 
sound.beatsPerMinute = (UBYTE) beatsPerMinute; 


if (volume >= 0) 
sound.volume = (UBYTE) volume; 


if ((err=p_iow3 (pcb, P_FSET, &sound) ) <0) 
{ 
p_close (pcb); 
p_exit (err); 


} 


3-5 


SERIES 3/3A PROGRAMMING GUIDE 


p_ioc5 (pcb, E_FSSOUNDCHANNEL1, &ésndstat1, &buf1[0],&11); 
p_ioc5 (pcb, E_FSSOUNDCHANNEL2, &ésndstat2, &buf2[0],&12); 
waitstat2 (&sndstat1l, &ésndstat2) ; 


p_close (pcb); 


if (sndstat1 != 0 || sndstat1 != 0) 
p_exit (0)); 


} 
GLDEF_C INT main(VOID) 


{ 


WORD notes1[] = {1048,24,524,12}; 
WORD notes2[] = {1048,4,1320,4,1568,4,2092,4,1568,4,1320,4,1048,12}; 
WORD lenl = sizeof (notes1)/4,len2 = sizeof (notes2) /4; 

INT i; 

for (i = 0; i < 6; i++) 


{ 

play_notes (&notes1[0],&énotes2[0],len1l,len2,i,-1) 
p_sleep (1); 

} 


for (i = 0; i < 6; i++) 
{ 
play_notes (&notes1[0],&énotes2[0],lenl,len2,-1,140 + i*20) 
p_sleep (1); 
} 
return (0); 


} 


The main routine initialises the note buffers, then repeatedly passes the buffers, the buffer lengths, the 
volume and the beats per minute, to the subroutine play_sound that plays the tune. The tune is repeated 
first at the default beats per minute for all six allowed volume levels, and then at the default volume for 
six values of the beats per minute. The default is specified by passing a negative integer for the volume 
and/or the beats per minute. 


The subroutine play_sound opens the snp: channel, senses and sets the volume and beats per minute, 
plays the notes and closes the snp: channel. In the case of an error in, for example, sensing, play_sound 
closes the snp: channel and returns with an error code. As mentioned earlier it is essential that the 
P_FSSOUNDCHANNELn requests be made asynchronously using either p_ioc or p_iocs5 Plib library routines, 
as these guarantee completion even in the event of low batteries. 


A large fraction of the code in play_sound is concerned with error checking in order to ensure that the 
routine behaves in a sociable way. In particular the snp: channel is closed as soon as an error is 
discovered so to conserve power - this is essential when running on batteries and such measures should be 
standard in any quality application. 


The subroutine waitstat waits on the process i/o semaphore until completion of the two asynchronous 
requests specified by the pstat1 and pstat2 status words (for further details of such matters see the 
Asynchronous Requests and Semaphores chapter of the Plib Reference library). It is in fact a version of 
the Plib library routine p_waitstat that waits on two status words rather than one. 


The return (0) statement at the end of the main routine informs the Series 3a that the program has ended 
normally: it can also be omitted entirely. Use of the return statement with no return value is not 
recommended: in practice this will return a random error code possibly leading to the display of a 
spurious full screen error message. 


3-6 


CHAPTER 4 


USE OF SPY.APP 


Introduction 


This chapter describes the Spy application for the Series 3. This application contains many features that 
may help to "debug" problems with applications on the Series 3. 


The version of Spy described in this chapter is suitable for use on both the Series 3 and the Workabout, 
and can also be used on the Series 3a. A built version of spy.app that is specifically designed for use on 
the Series 3a will be found, following installation of the core SDK software, in the \sibosdk\s3atool 
directory. 


Building spy.app 

The Spy application is released in source form, as one of the Hwif demonstration programs. 

To build it, proceed in the same way as to build any of the other Hwif demonstration programs: 
e¢ move into the \sibosdk\hwdemo directory 
e type make spy 


e the resulting image file spy.img can be renamed to spy.app and copied into a \app directory on 
the Series 3 or the Workabout 


e the application can be installed in the System Screen and, on the Series 3, even assigned an 
application button - eg CONTROL+WORLD. 


The main display 


The main display is a scrolling list of processes currently running on the Series 3. The Change processes 
menu option allows customisation of which processes are shown. "System" processes are simply ones 
whose names start with "Sys$", and include: 


e — sys$shil - which the user sees as the System Screen 
¢ —sys$wsrv - the Window Server, which coordinates access to the screen and keyboard 
e — sys$fsrv - the File Server, which coordinates access to the filing systems 


e —sys$mang - the Manager, which keeps track of all resources used by processes (so that, for 
example, they can be properly tidied whenever processes exit) 


e — sys$ncp - the "brains" behind Remote Link (when it is running). 


The Null process, sys$null, which performs the vital task of switching the Series 3 off following sufficient 
inactivity, is omitted from the list displayed, for various technical reasons. 


First letter matching works in the main window, so that eg pressing 'C' enough times will position the 
highlight to the Calc process. 


Arrows are drawn in the top right and bottom right corner, Agenda-wise, whenever there are more 
processes beyond the visible boundaries of the list. 


SERIES 3/3A PROGRAMMING GUIDE 


The data displayed is updated every time Spy comes into foreground, and also whenever the Update menu 
option is selected. By default, it is also updated regularly on a timer, though this can be disabled by a 
menu option. The Refresh rate option governs how frequently updates take place, when the timer is 
enabled. 


There are in all twelve pieces of data that can be displayed for each process, but only three of these can be 
seen at any one time. Use the Change data menu option to choose which. 


Many of the data items can be meaningfully displayed either in Hex or in Decimal. Another menu option 
controls this. 


Heap statistics 


Five of the twelve possible items of data concern the allocator heap of the process. Each process has its 
own heap, which can vary in size according to the needs of the program. Thus a Word Processor editing a 
large document will typically have a larger heap than a Word Processor editing a smaller document. 


Each heap is divided into "alloced cells" and "free cells". The items "Cells allocated" and "Cells free" 
count these, and the items "Bytes allocated" and "Bytes free" sum how many bytes belong in each 
category. 


This data can be of great help in developing applications. It is of course vital that an application frees 
cells it no longer requires - otherwise these cells go to what is called "alloc heaven". Something to watch 
for in particular is alloc heaven following an out-of-memory failure. Typically, a process such as 
launching a dialog involves a number of different allocs; if any one of these fails, all the allocs which have 
already succeeded must be undone. System code provides mechanisms such as "automatic destruction" 
and "automated clean-up" to help applications here, but applications can use these incorrectly at times - 
hence the need for real-time checking. 


Stack statistics 


Whenever a process starts, its stack is filled up with oxrr's. This makes it easy to see how much stack has 
been used, at any one time. Quality programs need to avoid having too large a stack - the built-in 
applications default to a stack of 0xa00. On the other hand, the operating system panics them (panic 69) 
if it ever discovers that their stack is less than 0x100. This is because whenever an interrupt occurs, it 
runs in the stack of the current process. 


The Reset least stack menu option simply refills the bottom of the process's stack with oxFF's (ie up to its 
present stack pointer). 


Segment statistics 


The "Segment size" of a process gives the size of its data segment - which consists of the heap, static data 
private to the application, the stack, and finally the Epoc reserved statics at the bottom end. The quoted 
"Segment size" of an application can sometimes give a misleading account of how much memory it is 
actually using - since there are free cells as well as alloced cells in the heap. From time to time, the 
operating system may try to compress these heaps, but it can only do this by removing any free cells at the 
end of the heap. Applications should strive to avoid ending up with large free cells in the middle of their 
heap - though this is a very difficult goal to achieve. 


Tests for heap integrity 


Whenever Spy collects heap statistics for an application, it also checks the heap integrity. Any defect 
(caused for example by writing beyond the end of an alloc cell, or freeing a cell that was never alloced) 
results in an immediate alert. This alert helps to pin-point problems which would otherwise only rear 
their head much later - long after the real damage has been done. 


Process priorities 


The Process Priority gives the pecking order of the processes, as regards gaining CPU from the multi- 
tasking scheduler. Most applications the user sees run at 0x80 when in foreground, and at 0x70 when in 
background. This prevents computationally busy background tasks from detracting from the performance 
of the foreground task. 


Spy momentarily ups its own priority to a massive 0xc0 (the maximum allowed to non-OS processes) 
whenever it collects heap statistics from other processes, to lessen the chances of other processes 
manipulating their heaps at the same time as Spy is walking through them. Occasionally, Spy will find 
that a heap is momentarily marked as "locked" when it tries to survey it - this indicating that the 
Operating System is busy doing something there - in which case the heap statistics will all just be shown 
as 0 for that process. 


4 USE OF SPY.APP 


Other data 


The "Process ID" of a process is essentially the address of the control block of the application in the 
Operating System data space, although the top nibble reflects how many times that same slot has been re- 
used since the last reset (the top nibble will therefore always be zero for sys$mang, sys$fsrv, and 
sys$wsrv). When processes talk to each other, for example in conjunction with the Bring menu option, 
they need to know each other's PID ("Process ID"). 


The IO Semaphore count basically keeps track of how many outstanding events a process has to respond 
to. This will usually be -1 or zero, but if you task to the System Screen and then straight back to Spy 
again, you may see the count for sys$shll momentarily go as high as three. 


Logging Window Server statistics 


The menu command Log client produces information in text file form as to the structure of the windows, 
GCs, fonts, bitmaps, and other Window Server objects "owned" by an application. This information may 
of use in determining why certain drawing fails to appear on the screen. For example, it may be that a 
window is positioned wrongly, that the window is obscured by another, or that the current GC is set up 
incorrectly - any such failure can be seen from the log file. 


The menu command Log all clients repeats this process for all the clients of the Window Server. 


The Log client command can, in effect, be invoked even when Spy is in background. Just press the key 
combination SHIFT+CONTROL+PSION+N and a dump of the Window Server object usage of the foreground 
application will be created - by default in the file \oepAwsreport.lis. (This feature works because Spy has 
"captured" this key combination.) 


APPENDIX A 


TECHNICAL SPECIFICATIONS 


Psion's continuing product development and improvement programs mean that specifications and features 
are subject to change at any time and without notice. 


Psion Series 3a Technical Specification 


Physical characteristics 


Part numbers: 


Size 
Weight 


Screen 


Keyboard 


Sound and recording 


Power supply 
Internal 
Backup 


External 


Memory 


Built in 


System information 
Processor 


Operating system 


1600-0029-10 (256KB) 
1600-0025-10 (512KB) 
1600-0080-10 (1MB) 
1600-0082-10 (2MB) 


165mm x 85mm x 22mm (6.5"x 3.0"x 0.9"). 
275g (including batteries). 


480 x 160 pixel high contrast retardation film LCD. 
Size 131.6mm x 45.2mm, (4.915" x 1.637"). 

Pixel pitch 0.26mm x 0.26mm 

Pixel size 0.23mm x 0.23mm. 


58 key, QWERTY layout, computer style keyboard (UK models). 
8 touch sensitive icon buttons for application selection. 


Loudspeaker with DTMF dialling and digital sound playback. 
Microphone for digital sound recording. 


2 x AA batteries. 
3V Lithium CR1620 battery. 


A Psion Series 3 mains adaptor, (9-11V 250mA), (Note: earlier models 175mA). 
Vehicle power adaptor (24v & 12v cigarette lighter sockets), from Jan/Feb 1997. 


2MB or IMB Masked ROM and 2MB, 1MB, 512KB or 256KB RAM. 
Two SSD drives allow extra storage space on Flash/RAM SSDs, up to 8MB. 


NEC V30H running at 7.68MHz. 


EPOC. 
Microsoft MS-DOS compatible Flash Filing System. 


SERIES 3/3A PROGRAMMING GUIDE 


Expansion 


Peripherals 


Socket: 


Environment 


Operating temperatures 
EMC 


External peripherals (such as a modems and printers) can be connected via a 
fast serial interface (1.536 Mbits/sec), which accepts optional 3Link parallel 
and serial interfaces. The Serial 3Link allows communication with other 
computers. 


PC Card adapter. SMS cables for Nokia and Orange mobile phones. 
3Fax fax modem, (superseded by PC Card adapter). 


6-way two row rectangular (male, with retracting protective cover). 
See the section ‘The 15-way SIBO/RS232 connector’ in the 'SIBO Expansion 
Ports' chapter in the Hardware Reference manual for pinout details. 


O°C to 50°C. 
FCC Part 15 Class B; CE Mark 


Psion Series 3/3s Technical Specification 


These models are no longer in production. 


Physical characteristics 


Size 
Weight 


Screen 


Keyboard 


Sound 


Power supply 
Internal 
Backup 


External 


Memory 
Built in 


System information 
Processor 


Operating system 


165mm x 85mm x 22mm (6.5"x 3.0"x 0.9"). 
265g (including batteries). 


240 x 80 pixel high contrast retardation film LCD. 
Size 97.3mm x 38.9mm. 

Pixel pitch 0.385mm x 0.43mm 

Pixel size 0.355mm x 0.4mm. 


58 key, QWERTY layout, computer style keyboard (UK models). 
8 touch sensitive icon buttons for application selection. 


Piezo buzzer. 
Loudspeaker with DTMF dialing. 


2 x AA batteries. 
3V Lithium CR1620 battery. 


A Psion Series 3 mains adaptor, (9-11V 250mA), (Note: earlier models 
175mA). 

Vehicle power adaptor (24v & 12v cigarette lighter sockets), from Jan/Feb 
1997. 


Series 3 has 384KB or 512KB Masked ROM and 128KB or 256KB RAM, 
Series 3s has 512KB Masked ROM and 256KB RAM. 


Two SSD drives allow extra storage space on Flash/RAM SSDs, up to 8MB. 


NEC V30H running at 3.84MHz. 


EPOC. 
Microsoft MS-DOS compatible Flash Filing System. 


Expansion 


Peripherals 


Socket: 


Environment 


Operating temperatures: 


EMC: 


APPENDIX A: TECHNICAL SPECIFICATIONS 


External peripherals (such as a modems and printers) can be connected via 
the fast serial interface (1.536 Mbits/sec), which accepts optional 3Link 
parallel and serial interfaces. The Serial 3Link allows communication with 
other computers. 


6-way two row rectangular (male, with retracting protective cover). 
See the "Reduced External Expansion’ section of the 'SIBO Expansion Ports' 
chapter in the Hardware Reference manual for pinout details. 


O°C to 50°C. 
FCC Class B; EN55022 Class B 


Psion Series 3c Technical Specification 


Physical characteristics 


Part numbers: 


Size 
Weight 


Screen 


Keyboard 


Sound and recording 


Power supply 
Internal 
Backup 


External 


Memory 
Built in 


System information 
Processor 


Operating system 


Communications 
Infrared: 


Protocols: 


Language 


1600-0126-10 (IMB) 
1600-0122-10 (2MB) 


165mm x 85mm x 22mm (6.5"x 3.0"x 0.9"). 
275g (including batteries). 


480 x 160 pixel high contrast retardation film LCD. 
Size 131.6mm x 45.2mm, (4.915" x 1.637"). 

Pixel pitch 0.26mm x 0.26mm 

Pixel size 0.23mm x 0.23mm. 


58 key, QWERTY layout, computer style keyboard (UK models). 
9 touch sensitive icon buttons for application selection. 


Loudspeaker with DTMF dialing and digital sound playback. 
Microphone for digital sound recording. 


2 x AA batteries. 
3V Lithium CR1620 battery. 


A Psion Series 3 mains adaptor, (9-11V 250mA), (Note: earlier models 
175mA). 

Vehicle power adaptor (24v & 12v cigarette lighter sockets), from Jan/Feb 
1997. 


2MB Masked ROM and IMB or 2MB RAM. 
Two SSD drives allow extra storage space on Flash/RAM SSDs, up to 8MB. 


NEC V30H running at 7.68MHz. 


EPOC. 
Microsoft MS-DOS compatible Flash Filing System. 


IrDA SIR optical link, for IR communications and printing. 


XMODEM, YMODEM and ZMODEM, (except from Comms Script in early 
models), giving compatibility with most computer communications software. 


Full script language with sample scripts allows automated log-on to 
electronic mail and other systems, and control of modems. 


SERIES 3/3A PROGRAMMING GUIDE 


Expansion 


Peripherals 


Socket: 


Environment 


Operating temperatures: 


EMC: 
Safety: 


External peripherals (such as a modems and printers) can be connected via 
the RS232 port which accepts optional PC Link and Parallel Printer Link 


cables. The PC Link allows communication with other computers. 


Travel Modem. PC Card adapter. SMS cables for Ericsson, Nokia and 


Orange mobile phones. 


15-way Honda type custom connector 


See the section ‘The 15-way SIBO/RS232 connector' in the 'SIBO Expansion 


Ports’ chapter in the Hardware Reference manual for pinout details. 


O°C to 50°C. 
FCC Part 15 Class B; CE Mark 
EN60950 


Psion Siena Technical Specification 


Physical characteristics 


Part numbers: 


Size 
Weight 


Screen 


Keyboard 


Sound 


Power supply 


Internal 


Backup 


External 


Memory 
Built in 


System information 


Processor 


Operating system 


1010-0003-01 (1MB) 
1010-0002-01 (512KB) 


150mm x 70mm x 18mm (5.9"x 2.7"x 0.7"). 
180g (including batteries). 


240 x 160 pixel high contrast retardation film LCD. 
Size 60.0mm x 40.0mm, (2.36" x 1.57"). 

Pixel pitch 0.25mm x 0.25mm 

Pixel size 0.23mm x 0.23mm. 


48 key, QWERTY layout, computer style keyboard (UK models). 
20 key calculator keypad 
8 touch sensitive icon buttons for application selection. 


Piezo buzzer. 


2 x AAA batteries 
giving approximately 40hrs use (2 months typical usage). 


3V Lithium CR1620 battery. 


From a Siena SSD Drive 


1MB Masked ROM and 512KB or 1MB RAM. 


NEC V30H running at 7.68MHz. 


EPOC. 
Microsoft MS-DOS compatible Flash Filing System. 


Communications 


Infrared: 


Expansion 


Peripherals 


Socket: 


Environment 


Operating temperatures: 
EMC: 
Safety: 


APPENDIX A: TECHNICAL SPECIFICATIONS 


IrDA SIR optical link, for IR communications and printing. 

The Siena does not have the DYL file in ROM to support the AccessIr API 
(for Infrared beaming), this is provided with this SDK and must be loaded 
before third party programs using this API can be used. 

The Siena does not have the DYL file in ROM to support the IrLPT API (for 
Infrared printing), this must be loaded before third party programs using this 
API can be used. 


External peripherals (such as a modems and printers) can be connected via 
the RS232 port which accepts optional PC Link and Parallel Printer Link 
cables. The PC Link allows communication with other computers. 


External SSD Drive, via 1.536Mbits/sec Fast Serial interface. 


PC Card adapter. SMS cables for Ericsson, Nokia and Orange mobile 
phones. 


15-way Honda type custom connector 
See the "Reduced External Expansion’ section of the 'SIBO Expansion Ports' 
chapter in the Hardware Reference manual for pinout details. 


O°C to 50°C. 
FCC Part 15 Class B; CE Mark 
EN60950 


Psion Siena SSD Drive Technical Specification 


Physical characteristics 


Part number: 
Compatibility: 
EMC: 

Safety: 

Size 

Weight 

Power input: 
Power output: 


Connectors: 


SSD slots: 


1011-0005-01 

Psion Siena only 

FCC Part 15 Class B; CE Mark 

EN60950 

118mm x 69mm x 15mm (4.62"x 2.7"x 0.6"), (pre-production model). 

87g, including flying lead, (pre-production model). 

A Psion Series 3c mains adaptor, (9-11V 250mA), (supplied with the drive). 
Power is supplied to a connected Siena via the RS232 connector. 


15-way Honda type custom plug on flying lead to connect to the Siena 
15-way Honda type custom socket to connect to a PC (for use with PsiWin) 


One SSD slot; accepts all capacities of Flash/RAM SSD. 


Psion Serial 3Link Technical Specification 


The Serial 3Link comes in two versions, one for IBM PC compatible computers and the other for Apple 


Macintosh machines. 


Part number (PC): 


Part number (Apple): 
Compatibility: 


EMC 


1601-0001-01 (cable only) 
1601-0039-11 (with PsiWin software) 
1601-0002-10 (with V1.41 software) 


Series 3, Series 3a 
(The Psion Series 3c and Psion Siena machines use a different type of 
communications cable, the PC Link cable.) 


FCC Part 15 Class B; CE Mark 


SERIES 3/3A PROGRAMMING GUIDE 


Safety: 
Physical 


Interface 


Memory 
Protocols 
Language 


Communications 
software 


Connectors - IBM PC 


Connector - Apple Mac 


Connectors 
- both versions 


EN60950 


Pod with lead for connection to the Series 3 or LIF adaptor. 

Pod incorporates "auto wake up" switch. 

Replaceable lead to connect the pod to the other computer or peripheral. 
Complete connection is functionally equivalent to a 'null modem’ cable. 


RS232. 


Masked ROM in the 3Link pod. This contains the script language and 
supporting communications software. The pod appears as SSD drive C. 


XMODEM and YMODEM, giving compatibility with most computer 
communications software. 


Full script language with sample scripts allows automated log-on to 
electronic mail and other systems, and control of modems. 


Link and/or RCom and/or PsiWin software supplied provides a simple 
interface for exchanging information with IBM PC compatibles and with the 
Apple Macintosh, giving direct remote file access. 


9-pin D-type (for connection to an IBM AT type PC or modem serial 
port). 

25-pin D-type (for connection to an IBM XT type PC or modem serial port. 
Note: The model currently distributed through retail channels only has a 
9-pin D-type connector, but the Serial 3Link assembly is available as 
separate cables and pod - see below). 


Pin name Description Pin number Direction 
PC - 3Link 

FG Frame Ground 1 — 
(earth) 

TD Transmitted Data 2 > 

RD Received Data 3 - 

RTS Request To Send 4 > 

CTS Clear To Send 5 ce 

DSR Data Set Ready 6 eS 

SG Signal Ground 7 — 
(common return) 

DTR Data Terminal Ready 20 > 

8-pin round 


6-way two row rectangular (female) plug 

for connection to the Series 3 serial port, or Psion LIF adaptor (Workabout). 
See the "Reduced External Expansion’ section of the 'SIBO Expansion Ports' 
chapter in the Hardware Reference manual for pinout details. 


9-pin round (Internal connector on the 3Link pod) 
Pin name Description Pin number Direction 
Series 3 - Other 
DCD Data Carrier Detect 1 ce 
RD Received Data 2 a 
TD Transmitted Data 3 > 
DTR Data terminal Ready 4 > 
SG Signal Ground 5 > 
(common return) 
DSR Data Set Ready 6 ce 
RTS Request To Send 7 > 
CTS Clear To Send 8 a 
RI Ring Indicator 9 - 


See below for diagram of pinout. 


APPENDIX A: TECHNICAL SPECIFICATIONS 


See the Psion Series 3 3Link (RS232) manual provided with the 3Link for full details of operation. 


PC Serial 3Link assembly components 


The PC Serial 3Link assembly is available as separate components with the following part numbers: 


RS232 Cable 3Link Pod and cable to Psion 2500 0005 10 
9 Pin Cable to PC 2303 0004 02 
25 Pin Cable to PC 1404 0003 

Double headed Cable to PC 2303 0016 02 


PC Serial 3Link to Apple Macintosh converter 


This converter changes a PC Serial 3Link into an Apple Macintosh Serial 3Link: 
2 x disks, 1 x cable, 1 x manual 1601 0019 O01 


Modem Adaptor cable 


This converter changes a Series 3a PC/Mac Serial 3Link cable so that the Psion can be connected to a 
Hayes compatible modem: 


Series 3a Serial 3Link Modem Adaptor cable 1404 0002 


Serial Printer cable (Series 3a) 
- Technical Specification 


Part number: 1404 0001 

Compatibility: Psion Series 3/3s and Psion Series 3a only. 
EMC: FCC Part 15 Class B; CE Mark 

Safety: EN60950 

Connectors: 6-way two row rectangular (female) plug 


for connection to the Series 3/3s/3a serial port. 
See the "Reduced External Expansion’ section of the 'SIBO Expansion Ports' 
chapter in the Hardware Reference manual for pinout details. 


RS-232 25 way D-type connector (male). 


SERIES 3/3A PROGRAMMING GUIDE 


Serial Printer cable (Series 3c/Siena) 
- Technical Specification 


Part number: 1602-0017-01 

Compatibility: Psion Series 3c and Psion Siena only. 
EMC: FCC Part 15 Class B; CE Mark 

Safety: EN60950 

Connectors: Low Profile Honda type custom connector 


RS-232 25 way D-type connector (male) 


Psion PC Link cable Technical Specification 


The Psion Series 3c and Psion Siena machines use this new type of communications cable. 


Part number: 2013-0002-01 (cable only - available to developers by special request) 
1011-0010-01 (with PsiWin software) 
Compatibility: Psion Series 3c and Psion Siena only. 


To connect to other devices with 25 way D-type connectors, adapters are 
needed, (see Psion 9-to-25 way D-type adapters Technical Specification) 


EMC: FCC Part 15 Class B; CE Mark 
Safety: EN60950 
Connectors: Low Profile Honda type custom connector 


RS-232 9 way D-type connector (IBM AT type) 


Modem Adaptor cable 


This converter changes a Series 3c/Siena PC/Mac Link cable so that the Psion can be connected to a 
Hayes compatible modem: 


Series 3c Serial Link Modem Adaptor cable 1602 0016 01 


Psion Mac Link cable Technical Specification 


The Psion Series 3c and Psion Siena machines use this new type of communications cable. 


Part number: 1601-0101-01 

Compatibility: Psion Series 3c and Psion Siena only. 
EMC: FCC Part 15 Class B; CE Mark 

Safety: EN60950 

Connectors: Low Profile Honda type custom connector 


RS-232 (Apple connector) 


APPENDIX A: TECHNICAL SPECIFICATIONS 


Psion 9-to-25 way D-type adapters 
- Technical Specification 


The Psion series 3c and Psion Siena machines use a different type of communications cable from 
preceding machines;- the Psion PC Link cable. To connect to other 25 way D-type connector devices, 
adapters are needed as, unlike the 3Link cable, this is a single cable and can’t be split to change the RS- 
232 half to connect to a serial printer or modem. 


The new PC Link and 3Link cables use the pins on the D-type plugs in a unique way. This means that a 
unique mapping from 9-to-25 way pinouts is required, so special adapters (i.e. non-industry standard) 
have been designed to provide this unique mapping. 


Except in special cases, these adapters replace the need for the old RS-232 serial printer and modem 
cables for 3Link users. In addition, these adapters allow connection of a 3Link or PC Link cable to a PC 
with 25 way communication ports. 


The three types of Psion branded RS232 9-to-25 way D-type adapters allow any Psion cable with a 9 way 
D-type connector to be connected to another machine with a IBM XT type PC 25 way D-type port or 
modem or printer serial port. 


Adapter Part number EMC Safety 

Modem 1602 0016 01 FCC Part 15 Class B; CE Mark EN60950 
Serial Printer 1602 0017 O1 FCC Part 15 Class B; CE Mark EN60950 
PC (XT) 1602 0015 01 FCC Part 15 Class B; CE Mark EN60950 


Modem 9-to-25 way D-type adapter - wiring diagram 


9 way D - male 25 way D - male 
RX - pin 3 
TX - pin 2 
DTR - pin 6 


[RX - pin3 | 
| TX -pin2 | 
| DTR- pin6 | 
GND - pin 5 
| _DSR- pin 4 | 
| RTS - pin8 | 
| CTS - pin7 | 
| DCD - ping | 


DSR - pin 4 
RTS - pin 8 
CTS - pin 7 
DCD - pin 9 


SHELL 


PC (XT) 9-to-25 way D-type adapter - wiring diagram 


9 way D - male 25 way D - female 
| RX - pin 3 Fj pin-2 
| TX pin 2 >} F pin 3 
| _DTR- pin 6 -}—__—jpin-6_ 
| GND - pin 5 | pin-7 
| __DSR-pin 4 |§—____pin- 20 
| __ RTS - pin 8 -}——jpin-5 
| _CTS - pin? |} F pin-4 
| DCD - pin 9 |F—____—j pin-7 
(ton te 


SERIES 3/3A PROGRAMMING GUIDE 


Printer 9-to-25 way D-type adapter - wiring diagram 


9 way D - male 25 way D - male 
| WRX - pin 3 Fj pin-2 
| TX pin 2 | F pin-3 
| _DTR-pin 6 |} pin-6_ 
| GND - pin 5 | pin-7 
| __DSR- pin 4 -——____j pin-20_ 
| _RTS - pin 8 Fj pin -5,8 
| __ CTS - pin 7 |} pin-4 
| DCD -pin 9 |} pin-7 
int 


Psion Parallel 3Link Technical Specification 


Part number: 


Compatibility: 


EMC: 


Interface: 


Connectors: 


1601-0003-10 


Psion Series 3, Psion Series 3 and Psion Workabout with LIF adaptor only 
(The Psion Series 3c and Psion Siena machines use a different type of printer 
cable, the Parallel Printer Link cable. ) 


FCC Part 15 Class B; CE Mark 


Centronics interface for parallel printers 


6-way two row rectangular (female) custom plug, for connection to the 
Series 3 or Series 3a serial port, or Psion LIF adaptor (Workabout). 

See the "Reduced External Expansion’ section of the 'SIBO Expansion Ports' 
chapter in the Hardware Reference manual for pinout details. 


Centronics (for connection to the parallel port of a printer) 


Psion Parallel Printer Link cable 
- Technical Specification 


Part number: 


Compatibility: 


EMC: 
Safety: 


Connectors: 


Power: 


A-10 


1011-0017-01 


Psion Series 3c and Psion Siena only 

The Parallel Printer Link is not for use with the Series 3, Series 3a, MC, HC 
or Workabout, (The Psion Series 3 and Psion Series 3a machines use a 
different type of printer cable, the Psion Parallel 3Link cable.) 


FCC Part 15 Class B; CE Mark 
EN60950 
Low Profile Honda type custom connector 


Centronics connector (to connect to a Centronics type parallel printer port) 


One 9V PP3 battery. 
With typical usage, the expected life from a new battery is 150 hours. 
Power is only consumed when printing. 


APPENDIX A: TECHNICAL SPECIFICATIONS 


Psion PC Card Modem Adapter 
- Technical Specification 


Variants 


There are three variants: 


e = Series 3a 
e = Series 3c 


e PC 


The PC Card Modem Adapter with a suitable PC Card modem, combined with the PsiFax software, 
supersedes the 3Fax modem and software for the Series 3a. For the Series 3c there is also the alternative 


Travel Modem. 


Physical characteristics 


Part number: 


Compatibility: 


EMC: 
Safety: 
Size 
Weight 


Processor: 
Memory: 


Power: 


Battery life: 


Interface to computer: 


User interface: 


Connectors: 


Series 3a variant: 2501-0223-01 (unboxed, not retail) 
Series 3c variant: 2501-0224-01 (unboxed, not retail) 
PC variant: 2501-0225-01 (unboxed, not retail) 


Psion Series 3a - Series 3a variant only 

Psion HC - Series 3a variant only, with LIF connector module & LIF adapter 
Psion Workabout - Series 3a variant only, with LIF adapter 

Psion Series 3c - Series 3c variant only 

PC - PC variant only 


The PC Card Modem Adapter will work with Psion’s corporate and personal 
email applications and standard communications applications. Current 
versions of 3Fax software will not work with the PC Card Modem Adapter. 
New versions of 3Fax software, renamed as PsiFax, are available to work 
with the adapter. 


EN55022, EN500082-1 
EN60950 


118.5mm x 91mm x 20.5 mm 
105g without batteries 


Siemens C165 16 bit micro-controller 
OTP. 


4 x AA batteries 
and/or 
6V DC/1A mains adapter 


Depends on the modem card you use. 
With a Psion Dacom 28.8 modem, typically 90 to 120 mins (Duracell 
batteries). If the unit is unused, approximately 6 months (Duracell batteries). 


Series 3a variant: SIBO Fast Serial (ASIC5) 
Series 3c variant: RS232 
PC variant: RS232 


A single LED and piezo buzzer. The LED flashes according to the status of 
the PC Card adapter (transmitting, low power warnings etc.). The piezo 
buzzer provides modem tones, dial tones and bleeps with recognition when a 
PC Card modem is inserted into the adapter. 


For connection to the computer: 

Series 3a variant: 6-way two row rectangular (female) custom plug 
Series 3c variant: Low Profile Honda type custom connector 

PC variant: 9-way D type connector 


For connection to the PC Card modem: 
PCMCIA standard connector 


SERIES 3/3A PROGRAMMING GUIDE 


Supported PC Cards: 


DTE formats 
Flow control 


Data transfer rates: 


Indicator LED 


Psion Dacom Gold Card 

US Robotics WorldPort 

Pace Microlin 

Megahertz X JACK Series 
Nokia Cellular Data Card 
Philips Mobile Data Card 
Hayes PC Cards 

Dr. Neuhaus Fury Cards 

and many other popular models 


PC Modem Cards can be inserted at any time and recognised by the card 
adapter (hot swapping) 


8N1,7E1,701 
RTS/CTS 


300 Baud to 57.6 KBaud with autobauding 
300 Baud to 115 KBaud without autobauding 


Note: Because Psion Fast Serial operates at a maximum 19.2kbs the user will 
not be able to get the full 33.6 KBaud data rate available from V.34 PC 
Cards in the Series 3a variant of the PC Card Adpter. In this scenario the 
connection rate will drop down to 14.4 KBaud. 


to/from 
Psion 


Indicator LED 


Status On Batteries On Mains 

Stand by Off Flashing green (slow) 
Idle Flashing green (slow) Flashing green (slow) 
Configuring PC card Flashing green (fast) Flashing green (fast) 
Connected to remote modem Continuous green Continuous green 
Low battery warning Flashing red N/A 


APPENDIX A: TECHNICAL SPECIFICATIONS 


Psion Travel Modem Technical Specification 


Physical 

Part number: 

Series 3/3s compatibility: 
Series 3a compatibility: 
Workabout compatibility: 
Series 3c compatibility: 
Siena compatibility: 
EMC: 

Environment: 


Dimensions: 


Power: 


Communications 


Functions: 


Dialling: 
Echo suppressor: 
REN: 


Fax operation: 


Computer connection 


Connector: 


Network connection 


Data transfer rate: 


FCC Part 15 Class B; CE Mark 


Operating temperature: 0-50C 
Operating humidity: 0-95% non-condensing 


165mm x 40mm x 25mm 
2 x AA batteries or 


optional rechargeable NiCad battery pack or 
optional 10V (250mA) DC Series 3c mains adaptor. 


Autodialling (tone and pulse) modem conforming to: 
V.21,V.22, V.23, V.22bis, V.27ter, V.29, V 32 and V 32bis standards. 
It supports V.25 auto answering recommendations. 


May be used with either tone (MF) or pulse (LD) signalling BT lines. 
Echo-suppressor tone (V25) when auto answering. 
1. 


Controlled automatically by software (not supplied with the Travel 
Modem). 

The Travel Modem can send faxes at up to 9600bps. 

The fax feature is compatible with Group 3 fax machines. 


Low Profile Honda type custom connector on flying lead 

for connection to a Psion Series 3c. 

See the 'Reduced External Expansion’ section of the 'SIBO Expansion Ports' 
chapter in the Hardware Reference manual for pinout details. 


up to 57600bps with V.32bis and V.42bis 
(compression is dependant upon file type) 
V.32 9600 bps full duplex 

V.32bis 14400 bps full duplex 


SERIES 3/3A PROGRAMMING GUIDE 


Operational modes: 


Line connection: 
Signal level: 


Equalisation: 


Interface: 


Error correction: 


Data compression: 


Autodial/autoanswer 
Dial method: 


Call progress: 


Call control: 
Automatic answer: 


Mode selection: 


Call disconnection: 


BABT Approval 


Approval number: 


V.21 300bps full duplex 

V.22 1200bps full duplex 

V.22bis 2400bps full duplex 

V.23 1200/75 full duplex 75/1200 full duplex 
V.27ter 4800bps fax send and receive 

V.29 9600bps fax send and receive 


2 wire PSTN via BT 600 type modular jack on flying lead 
-9 dBm 


Transmit fixed compromise 
Receive automatic adaptive 


600 ohm 


V.42 incorporating LAPM and MNP Class 4 
MNP Class 10 


V.42bis and MNP Class 5 


Tone or pulse, selectable 


Loudspeaker with on/off control 
Extended results codes 


Extended "AT" command set 
To CCITT V.25 recommendation 


Automatic configuration to V.21/V.22/V.23/V.22bis and V32/V32bis on 
receive 


Loss of carrier, DTR or by command 


606866 


Psion 3Fax Modem Technical Specification 


The 3Fax modem has been superseded by the Series 3a PC Card Adapter with a suitable PC Card modem, 
combined with the PsiFax software on SSD, (for the Series 3c there is the Travel Modem). 


Physical 


Part number: 


Series 3/3s compatibility: 


Series 3a compatibility: 


Workabout compatibility: 


Series 3c compatibility: 
Siena compatibility: 
EMC: 


Environment: 


Dimensions: 


Power: 


1601-0022-01 


No 
Yes (512KB, IMB and 2MB models only) 
No 


FCC Part 15 Class B; CE Mark 

Operating temperature: 0-50C 

Operating humidity: 0-95% non-condensing 
165mm x 40mm x 25mm 


2 x AA batteries or 
optional rechargeable NiCad battery pack or 
optional 10V (250mA) DC Series 3a mains adaptor. 


Communications 


Functions: 


Dialling: 
Echo suppressor: 
REN: 


Fax operation: 


Computer connection 


Connector: 


Network connection 


Data transfer rate: 


Operational modes: 


Line connection: 


Signal level: 
Equalisation: 


Interface: 

Error correction: 

Data compression: 
Autodial/autoanswer 
Dial method: 

Call progress: 


Call control: 
Automatic answer: 
Mode selection: 
Call disconnection: 


BABT Approval 


Approval number: 


APPENDIX A: TECHNICAL SPECIFICATIONS 


Autodialling (tone and pulse) modem conforming to: 
V.21,V.22, V.23, V.22bis, V.27ter, and V.29 standards. 
It supports V.25 auto answering recommendations. 


May be used with either tone (MF) or pulse (LD) signalling BT lines. 
Echo-suppressor tone (V25) when auto answering. 
1. 


Controlled automatically by the software supplied with the 3Fax modem. 
The 3Fax modem can send faxes at up to 9600bps. 
The fax feature is compatible with Group 3 fax machines. 


6-way two row rectangular (female) plug 

for connection to a Psion Series 3a. 

See the 'Reduced External Expansion’ section of the 'SIBO Expansion Ports' 
chapter in the Hardware Reference manual for pinout details. 


up to 9600bps with V.22bis and V.42bis 
(compression is dependant upon file type) 


V.22bis 2400 bps full duplex 

V.22 1200 bps full duplex 

V.23 1200/75 full duplex 75/1200 full duplex 
V.21 300 bps full duplex 

V.27 ter 4800 bps fax send and receive 

V.29 9600 bps fax send and receive 


2 wire PSTN via BT 600 type modular jack 
3 wire Bell Tinkle Suppression supported 


-9 dBm 


Transmit fixed compromise 
Receive automatic adaptive 


600 ohm 
V.42 incorporating LAPM and MNP Class 4 
V.42bis and MNP Class 5 


Tone or pulse, selectable 


Loudspeaker with volume control 
Extended results codes 


Extended "AT" command set 

To CCITT V.25 recommendation 

Automatic configuration to V.21/V.22/V.23 & V.22bis on receive 
Loss of carrier, DTR or by command 


NS/1397/3/R/604375 


The greyed out table is statutory statements and not really part of the tech spec 


Nokia 21XX to Series 3c/Siena SMS Cable 
- Technical specification 


This SMS cable is available from the beginning of January 1997. 
This SMS Link cable connects a Psion Series 3c or Siena to Nokia’s 21XX range of GSM/DCS/PCS 


digital mobile phones. 


The cable is for use with applications based on version 2.01 of the SMS SDK running on a Siena or 


Series 3c. 


The top level Psion part number for this SMS cable is 1601- 0106 -01. 


SERIES 3/3A PROGRAMMING GUIDE 


Ericsson SMS SDK and SMS Cables 


There will be 2 types of SMS products: 


e SMS SDK - enables Psion Registered Developers to create applications for both vertical and 
horizontal markets that make use of the SMS capability provided by Ericsson’s GSM/DCS/PCS 
digital mobile phones; 


e SMS applications and SMS cables - Shrink wrapped and custom SMS applications available 
from both Psion and its Registered Developers. These applications will be invariably be packaged 
with the Ericsson SMS cable to connect the Psion to the Ericsson mobile phone. 


The SMS SDK will be released to selected registered developers from the end of December 1996. 
The SMS SDK is distributed for free. 


Product Description 


Ericsson SMS SDK 
The SMS SDK provides the following capabilities: 


e Mobile Originate (MO) and Mobile Terminate (MT) of SMS messages; 
e Access to the address book memory within the phone and SIM; 

e Sensing of key presses and screen indications on the phone; 

e Ability to send the full range of key presses from the Psion to the phone; 
e Sensing the model number and firmware version of the phone; 

e SMS delivery status reports (DSRs). 


SMS cables 


An SMS Link cable connects a Psion Series 3c or Siena to Ericsson’s GSM/DCS/PCS range of digital 
mobile phones (GH377, GF388, GA318, PH337, CH337 etc.) 


Note: Ericsson SMS links will not be available for the Psion 3a. 


The interface between the Ericsson handset and Psion 3c/Siena is housed within the Ericsson connector, 
thus providing the user with only a thin cable connection. 


The top level Psion part number for this SMS cable is 1601-0107-01. 


APPENDIX A: TECHNICAL SPECIFICATIONS 


Cellnet SMS/ink 


Cellnet SMSlink is a joint development between Cellnet and Psion. It is an SMS product for the popular 
Series 3a and Nokia 2110 combination. 


The Product includes: 
e Cable to connect Series 3a to Nokia 2110/2110i, and Philips PR747 GSM mobile phones 
e Series 3a software for composing, sending and receiving text messages 


e PC software (on floppy disc) to send text messages direct from PC to GSM mobile phones. 
(Requires a modem) Note: This is Freeware supplied by Cellnet. 


e User Guide 
Cellnet SMSlink allows you to: 
¢ Compose, edit, send and receive short messages of up to 160 characters 
e Simple message management using the inbox and outbox, and unread message box 
e Send and receive electronic business cards 
e Send messages to a selected group of contacts 
e Incorporates a contact manager similar to the built-in Data application 
e Works with contact databases generated using Data or compatible applications 
e Sort and search on contact database entries 
e¢ 10 pre-set messages, and you can also create your own. 
e Appointment details sent in a message may be extracted and merged with Agenda. 
Compatibility 
Compatible with Psion Series 3a computers - 512k and above 


This application will be distributed on SSD and floppy disk. Floppy disc version requires PsiWin or 3link 
for installation. 


Version Top level part number 


SSD: 1601-0065-01 


Floppy disc: 1601-0066-01 


Availability 


Has been available from August 1996. 


Please Note: Our license with the development company only allows us to market this product in the UK. 
Therefore it is not available to export markets. 


SERIES 3/3A PROGRAMMING GUIDE 


Vodaphone Telenote Link 


Vodaphone Telenote Link is a joint development between Vodaphone, Nokia and Psion. It is an SMS 
product for the popular Series 3a and Nokia 2110 combination. 


Versions 
There are two versions of the Telenote link: 


e Version 1, (available from the beginning of December 95), is for use with the Nokia 2110 and 
Philips PR747 digital handsets; 


e Version 2, (available from February 96), is for use on the Orbitel 905 digital handset. 
The product is issued either on SSD and floppy disk. 


System Requirements 


Telenote Link requires a Psion Series 3a 256K or larger internal RAM palmtop computer, or a Psion 
Workabout, and a Nokia 2110 (or equivalent) digital phone on the Vodafone digital mobile phone 
network. 


The Telenote Link product includes software for a PC which allows its user to originate messages, and 
using a modem, (not supplied) to dial direct into the Vodafone Short Message Centre. 


Telenote Link Functions 


The Vodafone Telenote Link for the Psion Series 3a allows the user you to create, store and receive short 
messages in a simple intuitive manner using his Series 3a and Nokia GSM phone. The software for the 
Series 3a also includes a comprehensive address book function and the ability to create frequently used 
messages (e.g. “Please call me”, or “I will be 15 minutes late for the meeting”), which can be sent quickly 
with a minimum number of key strokes. 


The Telenote Link product allows the user to: 


e Send messages from his Series 3a and Nokia phone to another handset on the Vodafone GSM 
network, or any other GSM network world-wide which supports SMS and with which Vodafone 
have a roaming agreement; 


e Send messages from a PC (provided the user already has a modem) to any GSM handset on the 
Vodafone network (this feature will work with handsets other than those based on the Nokia 
2110). 


The Telenote Link product does not allow the user to: 
e Send or receive SMS to/from a Cellnet, Orange or Mercury digital phone; 


e Send or receive SMS to/from a phone on a network which does not support SMS, or with which 
Vodafone does not have a roaming agreement. Most foreign GSM networks will support it, but 
some (particularly France) are behind in deploying the service; 


e Send or receive e-mail to/from his Series 3a/Nokia; 
e Send or receive Faxes to/from his Series 3a/Nokia. 


Telenote Link Package 
The Telenote Link Package includes: 


¢ Cable to connect a Series 3a to Nokia 2110 (or derivatives such as Philips) GSM phones on the 
Vodafone network; 


e Software for the Series 3a supplied on floppy disk or SSD. Floppy disk software (requires a PC 
and PsiWin to download to Series 3a); 


e Software for a PC allowing use of a modem (not supplied) to direct dial into the Vodafone Short 
Message Centre, allowing the user to originate messages from his desktop. This is particularly 
useful for a receptionist/secretary who needs to pass on messages to somebody who is away from 
the office; 


¢ Comprehensive user guide. 


APPENDIX A: TECHNICAL SPECIFICATIONS 


Version Top level part number 


SSD: 1601-0057-01 


Floppy disc: 1601-0056-01 


Availability 


Current product. 


Orange Messaging Link 


Orange Messaging Link is a joint development between Orange and Psion. It is a messaging product 
which is based on the GSM SMS service but for the Orange network. (Orange is a Personal 
Communications Network (PCN) which uses GSM technology but at a higher frequency and with lower 
power handsets) It works with Series 3a and Nokia Orange and Nokia Orange 5.1 handsets. 


The product includes: 
e Cable to connect Series 3a to Nokia Orange and Nokia 5.1 handsets 
e Series 3a software for composing, sending and receiving text messages 
e User Guide 


e A guide prepared by Orange on how to access their network from a PC with a modem to send 
messages. 


Orange Messaging Link allows you to: 
e¢ Compose, edit, send and receive short messages of up to 160 characters 
e Simple message management using the Sent, Received, Not sent, and Phonebook dialogues 
e Send messages to a selected group of contacts 
e Works with contact databases generated using the series 3a Data application. 
e Create your own preset messages 
Compatibility 
Compatible with Psion Series 3a computers - 512k and above 


This application software is distributed on SSD or floppy disk. The floppy disc version requires PsiWin or 
3Link for installation. 


Version Top level part number: 


SSD: 1601-0067-01 


Floppy disc: 1601-0068-01 


Availability 
Available from mid-November 1996. 


Please Note: Our license with the development company only allows us to market this product in the UK. 
Therefore it is not available to export markets. 


APPENDIX B 


DIFFERENCES BETWEEN PSION SERIES 3 MODELS 


At the time of writing there are four current and six superseded machines in the Series 3 family. The main 
differences between the computers are tabulated overleaf. 


SERIES 3/3A PROGRAMMING GUIDE 


Current models in the Series 3 family 


SSD drives 2 2 optional optional 
extra extra 


Communications connector R232 R232 R232 R232 
low profile, low profile, low profile, low profile, 
with power with power with power with power 
output output input input 


Time management/organiser 
- Open book diary with reminder alarms day/week day/week day/week day/week 


- Planner views year/busy year/busy busy busy 


- 'Things to do' manager multiple lists | multiple multiple multiple 
with due lists with lists with lists with 
dates and due dates due dates due dates 
alarms and alarms and alarms and alarms 


- Chronological list and anniversaries view 3 3 


3 3 
Voice/sound recording and playback “Sound” “Sound” 
Ea al 
desk, desk, desk, desk, 
advanced advanced advanced advanced 
Ee ( 
Le 
Fax facility (send only) optional optional a 
extra extra 
Zoom-in zoom-out through four font sizes 
Spellchecker and Thesaurus optional optional 
extra extra 
eee ee 


APPENDIX B: DIFFERENCES BETWEEN PSION SERIES 3 MODELS 


aia eh iacite models in the Series 3 ay 


Ea 
(* 2MB if Spell app included) 512KB 512KB 
a ee 


SSD drives 
Communications connector 


Time management/organiser 
- Open book diary with reminder alarms day/week day/week day/week day/week 


- Planner views year year year year 


- 'Things to do' manager multiple multiple multiple multiple single list, single list, single list, 


lists with lists with lists with lists with up to 50 up to 50 up to 50 
due dates due dates due dates due dates items items items 
and alarms and alarms and alarms and alarms 


- Chronological list and anniversaries view 


optional 
extra 


Fax facility (send only) optional optional optional 
extra extra 


Pee ger enye a ee es ee Ee |e ee 


Communications application 3 3 3 3 optional optional optional 
extra extra extra 


Rich text file (RTF) support optional optional optional optional optional 
extra 


Spellchecker and Thesaurus optional optional optional 
extra 


Patience card game optional optional 
extra 


Ec (AE 


INDEX 


.afl files 
add file lists pre-defined slots $3, 1-2 
add file lists $3, 1-2 
als files 
creating .als files S3, 2-5 
creating with makeals.exe $3, 2-5 
.app files 
versus .img files, 1-2 
.img files 
versus .app files, 1-2 
.ma files 
alias file source file $3, 2-5 
.ms files 
multi-lingual $3, 2-3 
shell data file source file $3, 2-1 
.pcex files 
converting to icon files, 1-3 
pic files 
application icons $3, 1-2 
sc files 
resource files application S3, 1-2 
zc files 
resource files compressed S3, 1-2 
.shd files 
application S3, 1-3 
creating with makeshd.exe S3, 2-1 
customised $3, 1-3 
multi-lingual $3, 2-2 
shell data files $3, 1-2 
3Fax modem 
data compression, A-15 
modes, A-15 
3Link parallel 
specification, A-10 
3Link PC serial 
Apple Macintosh converter, A-7 
assembly components, A-7 
3Link serial cable 
specification, A-5 
9-to-25 way D-type adapters 
specification, A-9 
9-to-25 way D-type modem adapters 
wiring diagram, A-9 
9-to-25 way D-type PC (XT) adapters 
wiring diagram, A-9 
9-to-25 way D-type printer adapters 
wiring diagram, A-10 
adapter - PC card modem 
specification, A-11 
adapters 9-to-25 way D-type 
specification, A-9 
adaptor cable 
modem - 3Link, A-7 


adaptor cable modem 


Mac Link, A-8 
PC Link, A-8 
add file list 


application pre-defined slots $3, 1-2 
application S3, 1-2 
add files 
finding in an app file S3, 1-3 
alias files 
creating from .ma source files S3, 2-5 
creating with makeals.exe $3, 2-5 
aliasing 
applications active $3, 2-5 
applications active Word app S3, 2-5 
applications mechanisms S3, 2-6 
applications passive S3, 2-5 
applications S3, 2-4 
creating .als files S3, 2-5 
Word app multi-lingual S3, 2-13 
Apple Macintosh 
3Link - convertion from PC 3Link, A-7 
application 
add file finding in app files $3, 1-3 
add file lists pre-defined slots $3, 1-2 
add file lists $3, 1-2 
alias .als files creating $3, 2-5 
alias file creating from .ma files S3, 2-5 
aliasing active S3, 2-5 
aliasing active Word app S3, 2-5 
aliasing mechanisms S3, 2-6 
aliasing passive S3, 2-5 
aliasing S3, 2-4 
aliasing Word app multi-lingual $3, 2-13 
app files vs img files, 1-2 
button assigning system screen S3, 2-8 
button assignments system screen S3, 2-8 
comand line command byte S3, 2-10 
comand line debugger and S3, 2-10 
comand line disregarding S3, 2-11 
comand line handling S3, 2-9 
command line absent $3, 1-3 
command line byte new types S3, 2-13 
command line format of $3, 2-9 
command line handling S3, 2-10 
compatibility S3/3a/Workabout, 1-5 
compatibility S3/S3a/S3c/Siena, 1-5 
default directory S3, 2-2 
default file extension $3, 2-2 
directories creating as needed S3, 2-12 
example Spy Hwif, 4-1 
heap integrity Spy app, 4-2 
heap statistics Spy app, 4-2 
icon files, 1-2 
icons producing, 1-3 
icons with or without $3, 1-3 
multi-lingual keyboard S3, 1-4 
multi-lingual menu accelerators S3, 1-4 
other data Spy app, 4-3 
process priorities Spy app, 4-2 
public name S3, 2-2 
resource .rsc files, 1-2 
resource files .rzc compressed S3, 1-2 
running via Runimg S3, 1-3 
segment statistics Spy app, 4-2 


SERIES 3/3A PROGRAMMING GUIDE 


shell data files creating from .ms files S3, 
2-1 

shell data files customised S3, 1-3 

shell data files multi-lingual $3, 2-2 

shell data files S3, 1-2, 1-3 


shell data source files multi-lingual $3, 2-3 


shut down message absent S3, 1-3 

shut down message S3, 2-12 

Spy, 4-1 

Spy building, 4-1 

Spy main display, 4-1 

Spy source code, 4-1 

Spy system processes, 4-1 

stack statistics Spy app, 4-2 

switch file message absent S3, 1-3 

switch files message S3, 2-12 

system message receiving S3, 2-12 

system screen command line message S3, 
2-13 

system screen communications S3, 2-1 

system screen message handling S3, 2-12 


system screen shut down message S3, 2-12 
system screen switch files message $3, 2-12 


type numbers S3, 2-2 

type pure file list S3, 2-4 

window server statistics Spy app, 4-3 
button 

assigning in system screen $3 apps, 2-8 


assignments in system screen S3 apps, 2-8 


cable adaptor 

modem - 3Link, A-7 
cable adaptor modem 

Mac Link, A-8 

PC Link, A-8 
command line 

absent application $3, 1-3 

command byte S3 apps, 2-10 

debugger and S3 apps, 2-10 

disregarding S3 apps, 2-11 

format of S3 apps, 2-9 

handling S3 apps, 2-9, 2-10 

magic statics updating S3 apps, 2-11 

new command byte types S3, 2-13 

new for system screen message S3, 2-13 
comms 

3Fax modem data compression, A-15 

error correction, A-14, A-15 

Travel Modem data compression, A-14 
compatibility 

S3/S3a/S3c/Siena apps, 1-5 

S3/S3a/Workabout apps, 1-5 
DatApp1 

magic static system screen S3, 2-8 
DatLocked 

magic static $3, 2-7, 2-9 
DatProcessNamePtr 

magic static $3, 2-7, 2-8 
DatStatusNamePtr 

magic static $3, 2-7, 2-9 
DatUsedPathNamePtr 

magic static $3, 2-7, 2-8 
debugging 

magic statics $3 apps, 2-7 
directories 


creating as needed S3 apps, 2-12 
directory 
default S3 app, 2-2 
environment variable 
naming of, 1-5 
Series 3, 1-4 
EPOC 
magic statics $3, 2-7 
file list 
application type pure S3, 2-4 
file lists 
files with hidden attribute S3, 2-8 
system screen and S3 apps, 2-7 
system screen name with Sys$ $3, 2-7 
file name 
extension default S3 app, 2-2 
heap integrity 
Spy application, 4-2 
heap statistics 
Spy application, 4-2 
Hwif 
application example Spy, 4-1 
application magic statics S3, 2-7 
HWIM 
application magic statics S3, 2-7 
icon files 
application S3, 1-2 
contents and formats, 1-3 
converting from .pcx, 1-3 
production of, 1-3 
Iconed 
producting icon files, 1-3 
Macintosh 
3Link - PC serial converter, A-7 
Macintosh link cable 
specification, A-8 
magic static 
command line updating S3, 2-11 
DatApp1 system screen S3, 2-8 
DatLocked §3, 2-7, 2-9 
DatProcessNamePtr S3, 2-7, 2-8 
DatStatusNamePtr S3, 2-7, 2-9 
DatUsedPathNamePtr S3, 2-7, 2-8 
debugging and S3 apps, 2-7 
Hwif and S3 apps, 2-7 
HWIM and S3 apps, 2-7 
Series 3/3a, 2-7 
system screen S3 apps, 2-7 
window server S3 apps, 2-7 
makeals.exe 
alias files creating S3, 2-5 
makeshd.exe 
utility program, 2-1 
modem 
3Fax modem modes, A-15 
Travel modem data compression, A-14 
Travel Modem modes, A-14 
modem - 3Fax 
specification Series 3, A-14 
modem - PC card adapter 
specification, A-11 
modem adapters 9-to-25 way D-type 
wiring diagram, A-9 
modem adaptor cable 


3Link, A-7 
Mac Link, A-8 
PC Link, A-8 
modem -Travel 
specification, A-13 
multi-lingual 
aliasing Word app S3, 2-13 
multi-lingual apps 
keyboards S3, 1-4 
menu acceleratiors $3, 1-4 
other data 
Spy application, 4-3 
parallel 3Link 
specification, A-10 
parallel printer link cable 
specification, A-10 
PC (XT) 9-to-25 way D-type adapters 
wiring diagram, A-9 
PC card modem adapter 
specification, A-11 
PC Link cable 
specification Series 3c/Siena, A-8 
PC serial 3Link 
Apple Macintosh converter, A-7 
assembly components, A-7 
printer 9-to-25 way D-type adapters 
wiring diagram, A-10 
printer cable serial 
specification Series 3a), A-7 
specification Series 3c/Siena), A-8 
printer parallel link cable 
specification, A-10 
process priorities 
Spy application, 4-2 
program files 
icons with or without $3, 1-3 
programming 
Series 3 choices, 1-1 
Series 3 overview, 1-1 
public name 
application S3, 2-2 
REN 
ringer equivalence number, A-15 
ringer equivalence number modem, A-13 
reserved statics 
see magic static, 2-7 
resource files 
application .rsc $3, 1-2 
application .rzc compressed S3, 1-2 
ringer equivalence number 
modem, A-13 
modem), A-15 
Runimg 
application running from S3, 1-3 
segment statistics 
Spy application, 4-2 
serial 3Link 
assembly components - PC serial, A-7 
serial 3Link cable 
specification, A-5 
serial link 
specifications 3Link cable, A-5 
serial printer cable 
specification Series 3a), A-7 


INDEX 


specification Series 3c/Siena), A-8 
Series 3 
environment variables, 1-4 
programming choices, 1-1 
programming overview, 1|-1 
sound device driver MUS:, 3-1, 3-2 
sound driver de-installing sndfre.ldd, 3-4 
sound driver installing sndfrc.ldd, 3-1, 3-4 
sound driver snddvr.ldd, 3-1 
sound driver sndfrc.ldd, 3-1 
sound enhanced, 3-1 
specifications 3Link cable, A-5 
specifications modem 3Fax, A-14 
Series 3 models 
differences between, B-1 
Series 3/3s 
specifications, A-2 
Series 3a 
sound, 3-4 
sound device driver SND:, 3-1, 3-4 
sound example code, 3-5 
sound simultaneous, 3-1 
specifications, A-1 
Series 3c 
specification, A-3 
shell application 
communicating with S3, 2-1 
shell data files 
application S3, 1-2, 1-3 
application type numbers S3, 2-2 
creating from .ms files S3, 2-1 
creating with makeshd.exe S3, 2-1 
customised S3, 1-3 
default directory S3 app, 2-2 
default file extension S3 app, 2-2 
multi-lingual $3, 2-2 
source .ms files $3, 2-1 
source multi-lingual $3, 2-3 
shut down 
absent message application S3, 1-3 
message handling S3 apps, 2-12 
SIBO 
Series 3 models - differences, B-1 
Siena 
specification, A-4 
Siena SSD drive 
specification, A-5 
sound 
device driver MUS: Series 3, 3-1, 3-2 
device driver SND: Series 3a, 3-1, 3-4 
driver snddvr.ldd Series 3, 3-1 
driver sndfrc.ldd de-installing Series 3, 3-4 
driver sndfrc.ldd installing Series 3, 3-1, 
3-4 
driver sndfrc.ldd Series 3, 3-1 
enhanced S3, 3-1 
Series 3a, 3-4 
Series 3a example code, 3-5 
simultaneous Series 3a, 3-1 
specification technical 
9-to-25 way D-type adapters, A-9 
Macintosh link cable, A-8 
parallel 3Link, A-10 
parallel printer link cable, A-10 


iii 


SERIES 3/3A PROGRAMMING GUIDE 


PC card modem adapter, A-11, A-13 
PC Link cable Series 3c/Siena, A-8 
printer - parallel link cable, A-10 
serial printer cable Series 3a, A-7 
serial printer cable Series 3c/Siena, A-8 
Series 3 - 3Link cable, A-5 
Series 3/3s, A-2 
Series 3a, A-1 
Series 3c, A-3 
Siena, A-4 
Siena SSD drive, A-5 
Travel modem, A-13 
specifications technical 
modem 3Fax Series 3, A-14 
Spy 
application, 4-1 
application building, 4-1 
application heap integrity, 4-2 
application heap statistics, 4-2 
application main display, 4-1 
application other data, 4-3 
application process priorities, 4-2 
application segment statistics, 4-2 
application source code, 4-1 
application stack statistics, 4-2 
application system processes, 4-1 
application window server statistics, 4-3 
SSD drive - Siena 
specification, A-5 
stack statistics 
Spy application, 4-2 
statics reserved 
see magic static, 2-7 
switch file 
absent message application S3, 1-3 
switch files 
message handling S3 apps, 2-12 
system processes 
Spy application, 4-1 
system screen 
assigning application buttons S3, 2-8 
communicating with S3, 2-1 
current file $3, 2-1 
file list names with Sys$ $3, 2-7 
file lists and S3 apps, 2-7 
files with hidden attribute S3, 2-8 
magic statics $3 apps, 2-7 
message handling S3 apps, 2-12 
message receiving S3 apps, 2-12 


new command line message S3 apps, 2-13 
shut down message handling S3 apps, 2-12 


shut down message S3, 2-1 
status window S3, 2-1 


switch files message handling S3 apps, 2-12 


switch files message S3, 2-1 
system screen 
magic static DatApp1 S3, 2-8 
Travel modem 
specification, A-13 
type numbers 
applications S3, 2-2 
utility program 
makeals.exe alias file utility, 2-5 
makeshd.exe shell data file utility, 2-1 


window server 
magic statics S3 apps, 2-7 
statistics Spy application, 4-3 
wiring diagram 
9-to-25 way D-type modem adapters, A-9 
9-to-25 way D-type PC (XT) adapters, A-9 
9-to-25 way D-type printer adapters, A-10 
Word application 
aliasing active example S3, 2-5 
WSpCx.exe 
converting .pcx files to icon files, 1-3 


